- 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()
как это удобно.
Предлагаю не мелочиться, и кидать NoSuchElementException при попытке итерации по пустой коллекции
пидары
но я бы сделал так: max(default=0) {..}
или
maxOrNull{..} ?: 0
последнее мож и е, надо прове
Это косплей на пёрловский or die что ли?
так понятно?
теперь
18-летняя Ганнуся - самая старая курица в мире
Nil coalescing или как-то так
На J это похоже не больше, чем классический тернарник :-)
в JS тоже есть такая идиома с ||, она везде может быть, где любой тип приводится к булу
А такого элемента нет
1. Определим максимум как минимальное значение, для которого не существует элементов множества больше этого значения.
То есть располагаем элементы на этажах и смотрим, за кем первым приедет лифт (спускающийся лифт символизирует минимизацию этого значения).
Если кто-то был, лифт первым приедет за максимумом по высоте. Определение максимума работает и даёт интуитивно понятный результат.
Если никого не было, лифт уедет в подвал. Определение расширяет понятие максимума на пустое множество, называя минимальный элемент домена или минус бесконечность максимумом пустого множества.
2. max = -inf; foreach(x in xs) if (x > max) max = x;
Такой алгоритм даёт максимум для непустого множества и без переписывания кода называет минимальный элемент домена или минус бесконечность максимумом пустого множества.
И питушня (1) в математике, и питушня (2) в программировании являются простыми питушнями, которые могут выдержать поединок на бритве Оккама, согласуются между собой и указывают на -inf без пердолинга с доопределениями.
А у тебя ничего и "минус бесконечность" стали тождественны, это ерунда. Так можно лишь для оптимизации, чтобы не ебаться с монадами там, где нет смазки.
Это какая-то нетипизированная питушня, которой стыдливо прикрывают (void*)0.
Уважающий себя максимум должен быть из домена, к которому принадлежит элемент множества. Как минимум, в программировании.
max({{{empty}}}) = {{empty}}
max({{empty}}) = {empty}
max({empty}) = empty
max(empty) = -inf
> у тебя ничего и "минус бесконечность" стали тождественны
у разработчиков SQL ничего и "минус бесконечность" стали тождественны потому, что у них max(empty) = empty.
а max(length(col)) например?
а max(name) from person?
а оператором < можно хоть двух лысых чертей сравнивать, например, два массива друг с другом (сравнение строк - частный случай сравнения массивов) или два кортежа
не понимаю где тут место для -inf
max({length(...)} \ {length(...)}) = 0
max({name(...)} \ {name(...)}) = ""
вот -inf - мог бы, а MIN_INT нет
но у целых чисел нет инфа в погромировании
Какая между ними разница?
1. Определим максимум целых чисел из диапазона как минимальное значение, для которого не существует элементов множества больше этого значения.
То есть располагаем элементы на этажах и смотрим, за кем первым приедет лифт (спускающийся лифт символизирует минимизацию этого значения).
Если кто-то был, лифт первым приедет за максимумом по высоте. Определение максимума работает и даёт интуитивно понятный результат.
Если никого не было, лифт уедет в подвал. Определение расширяет понятие максимума на пустое множество, называя минимальный элемент диапазона максимумом пустого множества.
2. max = -INT_MIN; foreach(x in xs) if (x > max) max = x;
Такой алгоритм даёт максимум для непустого множества интов и без переписывания кода называет минимальный элемент из интов (INT_MIN) максимумом пустого множества.
И питушня (1) в математике, и питушня (2) в программировании являются простыми питушнями, которые могут выдержать поединок на бритве Оккама, согласуются между собой и указывают на INT_MIN без пердолинга с доопределениями.
Тебя укусил карманный лев, проверь.
-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;
Ну это совсем пиздец же.
Да нет, просто он сам настолько тормозной, что исключения на этом фоне не заметны. А второй вызов или боксинг в тупл заметен будет.
Именно поэтому я за "PHP".
один с нулом, Да
а еще лучше с дефолтом
Да и вообще много похожих методов сделаны в двух вариантах - с исключением и с null -
first/firstOrNull, last/lastOrNull, single/singleOrNull и тд
Вообще, где у нас zapret-info.govnokod.ru со списком уёбков с пояснениями и датами, кто и за что их таковыми признал?
Пример: https://govnokod.ru/14669#comment218119