- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
* Returns the largest value among all values produced by [selector] function
* applied to each element in the collection.
*
* @throws NoSuchElementException if the collection is empty.
*/
@SinceKotlin("1.4")
@OptIn(kotlin.experimental.ExperimentalTypeInference::class)
@OverloadResolutionByLambdaReturnType
@kotlin.internal.InlineOnly
public inline fun <T, R : Comparable<R>> Iterable<T>.maxOf(selector: (T) -> R): R {
val iterator = iterator()
MAKAKA 25.12.2020 01:20 # 0
как это удобно.
Предлагаю не мелочиться, и кидать NoSuchElementException при попытке итерации по пустой коллекции
пидары
bormand 25.12.2020 02:16 # 0
MAKAKA 25.12.2020 02:17 # 0
но я бы сделал так: max(default=0) {..}
или
maxOrNull{..} ?: 0
последнее мож и е, надо прове
bormand 25.12.2020 08:49 # 0
guest6 25.12.2020 14:34 # 0
bormand 25.12.2020 14:57 # 0
Это косплей на пёрловский or die что ли?
MAKAKA 25.12.2020 15:03 # 0
так понятно?
теперь
18-летняя Ганнуся - самая старая курица в мире
bormand 25.12.2020 15:08 # 0
Desktop 25.12.2020 15:13 # 0
Nil coalescing или как-то так
На J это похоже не больше, чем классический тернарник :-)
MAKAKA 25.12.2020 15:24 # 0
bormand 25.12.2020 15:48 # 0
MAKAKA 25.12.2020 15:49 # 0
в JS тоже есть такая идиома с ||, она везде может быть, где любой тип приводится к булу
guest6 25.12.2020 15:25 # 0
MAKAKA 25.12.2020 15:28 # 0
guest6 25.12.2020 20:05 # 0
bootcamp_dropout 25.12.2020 03:35 # +1
MAKAKA 25.12.2020 03:42 # 0
А такого элемента нет
1024-- 25.12.2020 10:43 # 0
1. Определим максимум как минимальное значение, для которого не существует элементов множества больше этого значения.
То есть располагаем элементы на этажах и смотрим, за кем первым приедет лифт (спускающийся лифт символизирует минимизацию этого значения).
Если кто-то был, лифт первым приедет за максимумом по высоте. Определение максимума работает и даёт интуитивно понятный результат.
Если никого не было, лифт уедет в подвал. Определение расширяет понятие максимума на пустое множество, называя минимальный элемент домена или минус бесконечность максимумом пустого множества.
2. max = -inf; foreach(x in xs) if (x > max) max = x;
Такой алгоритм даёт максимум для непустого множества и без переписывания кода называет минимальный элемент домена или минус бесконечность максимумом пустого множества.
И питушня (1) в математике, и питушня (2) в программировании являются простыми питушнями, которые могут выдержать поединок на бритве Оккама, согласуются между собой и указывают на -inf без пердолинга с доопределениями.
defecate-plusplus 25.12.2020 10:54 # 0
А у тебя ничего и "минус бесконечность" стали тождественны, это ерунда. Так можно лишь для оптимизации, чтобы не ебаться с монадами там, где нет смазки.
1024-- 25.12.2020 11:06 # 0
Это какая-то нетипизированная питушня, которой стыдливо прикрывают (void*)0.
Уважающий себя максимум должен быть из домена, к которому принадлежит элемент множества. Как минимум, в программировании.
max({{{empty}}}) = {{empty}}
max({{empty}}) = {empty}
max({empty}) = empty
max(empty) = -inf
> у тебя ничего и "минус бесконечность" стали тождественны
у разработчиков SQL ничего и "минус бесконечность" стали тождественны потому, что у них max(empty) = empty.
defecate-plusplus 25.12.2020 11:14 # 0
а max(length(col)) например?
а max(name) from person?
defecate-plusplus 25.12.2020 11:46 # 0
а оператором < можно хоть двух лысых чертей сравнивать, например, два массива друг с другом (сравнение строк - частный случай сравнения массивов) или два кортежа
не понимаю где тут место для -inf
1024-- 25.12.2020 11:50 # 0
max({length(...)} \ {length(...)}) = 0
max({name(...)} \ {name(...)}) = ""
MAKAKA 25.12.2020 14:21 # 0
вот -inf - мог бы, а MIN_INT нет
но у целых чисел нет инфа в погромировании
1024-- 25.12.2020 14:47 # 0
Какая между ними разница?
1. Определим максимум целых чисел из диапазона как минимальное значение, для которого не существует элементов множества больше этого значения.
То есть располагаем элементы на этажах и смотрим, за кем первым приедет лифт (спускающийся лифт символизирует минимизацию этого значения).
Если кто-то был, лифт первым приедет за максимумом по высоте. Определение максимума работает и даёт интуитивно понятный результат.
Если никого не было, лифт уедет в подвал. Определение расширяет понятие максимума на пустое множество, называя минимальный элемент диапазона максимумом пустого множества.
2. max = -INT_MIN; foreach(x in xs) if (x > max) max = x;
Такой алгоритм даёт максимум для непустого множества интов и без переписывания кода называет минимальный элемент из интов (INT_MIN) максимумом пустого множества.
И питушня (1) в математике, и питушня (2) в программировании являются простыми питушнями, которые могут выдержать поединок на бритве Оккама, согласуются между собой и указывают на INT_MIN без пердолинга с доопределениями.
gost 25.12.2020 14:49 # 0
Тебя укусил карманный лев, проверь.
1024-- 25.12.2020 14:58 # 0
-INT_MIN в том комментарии следует читать как INT_MIN.
> max = -INT_MIN; foreach(x in xs) if (x > max) max = x;
max = INT_MIN; foreach(x in xs) if (x > max) max = x;
defecate-plusplus 25.12.2020 08:24 # +1
bormand 25.12.2020 08:48 # 0
gostinho 25.12.2020 10:47 # 0
Ну это совсем пиздец же.
bormand 25.12.2020 12:07 # 0
MAKAKA 25.12.2020 14:21 # 0
bormand 25.12.2020 14:41 # 0
Да нет, просто он сам настолько тормозной, что исключения на этом фоне не заметны. А второй вызов или боксинг в тупл заметен будет.
MAKAKA 25.12.2020 14:44 # 0
gost 25.12.2020 14:48 # 0
bormand 25.12.2020 16:05 # 0
MAKAKA 25.12.2020 01:47 # 0
OCETuHCKuu_nemyx 25.12.2020 14:23 # 0
OCETuHCKuu_nemyx 25.12.2020 14:27 # 0
Именно поэтому я за "PHP".
guest6 25.12.2020 14:34 # 0
guest6 25.12.2020 14:33 # 0
один с нулом, Да
а еще лучше с дефолтом
Мистер Хэнки 28.12.2020 10:58 # +1
Да и вообще много похожих методов сделаны в двух вариантах - с исключением и с null -
first/firstOrNull, last/lastOrNull, single/singleOrNull и тд
1024-- 28.12.2020 18:36 # +2
bormand 28.12.2020 18:41 # +1
guest6 28.12.2020 19:04 # −2
1024-- 28.12.2020 19:08 # 0
Вообще, где у нас zapret-info.govnokod.ru со списком уёбков с пояснениями и датами, кто и за что их таковыми признал?
guest6 28.12.2020 20:53 # −2
Пример: https://govnokod.ru/14669#comment218119
bormand 28.12.2020 19:25 # 0