Size: a a a

CODE BLOG / Чат

2021 February 02

SS

Steel Sword in CODE BLOG / Чат
Aspirin
1..100 включает в себя 100 (я не знал что в питоне range() идёт исключительно). Если хочешь исключительно, будет: 1 until 100.
Вниз это: 100 downTo 1, исключительно вниз правда не выйдет.
А почему такой разношерстный стиль? Обычный перебор через оператор, а немного отличающийся - через ключевое слово?
источник

SS

Steel Sword in CODE BLOG / Чат
Котлин красивый ЯП, но в этом месте я почувствовал неудобство
источник

A

Aspirin in CODE BLOG / Чат
Ну это к разработчикам языка, но '..' это под капотом Int.rangeTo(Int)
источник

SS

Steel Sword in CODE BLOG / Чат
Минутка субъективщины. Если бы я делал, то сделал бы такой синтаксис:

..max (от нуля до max исключительно)
...max (от нуля до max включительно)
min.. (бесконечно)
min..max
min...max

..max..step (с шагом)
min..max..step
min....step (бесконечно с шагом)

Выглядеть должно нормально


for (i in 100...50..-10) {
 //
}
источник

A

Aspirin in CODE BLOG / Чат
Ох ты ж блин
источник

SS

Steel Sword in CODE BLOG / Чат
Aspirin
Ох ты ж блин
По крайней мере однородно, читабельно и места много не занимает
источник

SS

Steel Sword in CODE BLOG / Чат
Можно обнаглеть и реализовать вариант для любого типа, который реализует операторы + и ==
источник

SS

Steel Sword in CODE BLOG / Чат
Steel Sword
Можно обнаглеть и реализовать вариант для любого типа, который реализует операторы + и ==
Хотя может не надо, херня получается
источник

A

Aspirin in CODE BLOG / Чат
Steel Sword
Минутка субъективщины. Если бы я делал, то сделал бы такой синтаксис:

..max (от нуля до max исключительно)
...max (от нуля до max включительно)
min.. (бесконечно)
min..max
min...max

..max..step (с шагом)
min..max..step
min....step (бесконечно с шагом)

Выглядеть должно нормально


for (i in 100...50..-10) {
 //
}
Выглядит интересно, но в Котлине было бы проблематично имплементировать конструкции типа ..max из-за отсутствующего первого параметра, поэтому выход только писать 0..max. Использовать обычную функцию как range в питоне будет определённо легче.
В то же время, если я не ошибаюсь, то язык позволяет написать самому min..max..step.
источник

SS

Steel Sword in CODE BLOG / Чат
Aspirin
Выглядит интересно, но в Котлине было бы проблематично имплементировать конструкции типа ..max из-за отсутствующего первого параметра, поэтому выход только писать 0..max. Использовать обычную функцию как range в питоне будет определённо легче.
В то же время, если я не ошибаюсь, то язык позволяет написать самому min..max..step.
Но нам жи нужон сааааахар
источник

A

Aspirin in CODE BLOG / Чат
Steel Sword
Можно обнаглеть и реализовать вариант для любого типа, который реализует операторы + и ==
Не знаю о том ли ты говоришь, но rangeTo или .. работает для любого Comparable
источник

A

Aspirin in CODE BLOG / Чат
источник

A

Aspirin in CODE BLOG / Чат
Правда это не совсем IntRange выходит, ибо ты не можешь сделать итерацию для рандомных объектов
источник

SS

Steel Sword in CODE BLOG / Чат
А шаг как делается? Вот с числами всё понятно. Просто +1. А с абстрактным Comparable?
источник

A

Aspirin in CODE BLOG / Чат
Числовые диапазоны - единственные которые позволяют итерацию. Диапазон же любого Comparable, позволяет только проверить есть ли объект в данном диапазоне.
Как оно работает внутри можешь почитать в документации: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.ranges/-closed-range/
источник

A

Aspirin in CODE BLOG / Чат
TL;DR: всё что хранит диапазон это начальную позицию и последнюю. А с помощью contains проверяет, не выходит ли проверяемый объект за границы
источник

NK

ID:0 in CODE BLOG / Чат
Это точно не баг, это суперудар

#ithumor
источник

P

Phantom in CODE BLOG / Чат
Steel Sword
Например в питоне я могу написать как-то так:

for i in range(0, 101, 10):
 print(i)

И получу:
0
10
20
30
40
50
60
70
80
90
100
В шарпе такое можно легко сделать
источник

P

Phantom in CODE BLOG / Чат
Либо через linq, либо написать свой метод
источник

P

Phantom in CODE BLOG / Чат
Типо
источник