Я думав над тим, як би я пішов про розробку "ідеального" літералу діапазону, якби я займався дизайном мови. Для вас, хто не знає, знаєте літерал діапазону у висловлюванні, що представляє діапазон значень, наприклад 1-4. Вони найчастіше використовуються для циклів / foreach
Здається, є кілька питань, які слід враховувати
Підтримка інклюзивного та ексклюзивного діапазонів, позначення +1 або -1 до кінцевих точок, здається, трохи нечітке та помилкове.
Підтримка крокових дій, тому ви можете створити діапазон парних чи непарних чисел, наприклад
Читання, слід легко зрозуміти, що описує літерал діапазону
Однозначно, воно повинно бути абсолютно однозначним, що описує літерал діапазону
За замовчуванням, мабуть, має бути від включення до виключного, оскільки саме це використовується в більшості випадків для циклічного перегляду масивів тощо.
У будь-якому разі, я бачив один приклад діапазону літералу - Ruby, який має форму 1..3 для ексклюзивного (в кінці) діапазону і 1 ... 3 включно (в кінці). Ви також можете зробити 1..10.степ (5). Після ретельного розгляду я виявив, однак, кілька речей, які мені не сподобалися в такому підході (з моїх обмежених знань про рубін)
Ви можете описати інклюзивне та ексклюзивне лише для кінця. Описуючи більшість сценаріїв, це здається трохи непослідовним.
Варіюється лише додатковим. видається рецептом, коли важко зрозуміти, включено чи ексклюзивно асортимент. Я не знаю про вас, але пункти, як правило, стають чимось розмитим :)
Додавання методу, як позначення для діапазонів, схоже, змішує поняття буквального з поняттям класу, яке здається трохи непослідовним (навіть якщо діапазони збираються до класу)
У будь-якому разі, після роздуму над різними альтернативами. Я придумав це
- [5..1] 5,4,3,2,1
- [1..5 [ 1,2,3,4
- ] 1..5] 2,3,4,5
- [ 0..5..20] 0,5,10,15,20
і так далі. Мені це подобається, тому що [зазвичай позначає набір, і це щось вписується в це, навіть якщо це на відміну від набору буде впорядковано.
Одне, що мене трохи турбує, хоча робить ексклюзивні / включні індикатори обов'язковими чи ні, тобто, якщо ви пишете всього 1..5, типовим буде 1,2,3,4, оскільки це найпоширеніший випадок з масивами тощо . Це легше і читабельніше, але менш конкретно, і якщо вам довелося писати [1..5 [ви дізнаєтесь рано про те, як вони працюють.
То як ви думаєте, чи я висвітлював більшість баз, щось переглядав? Ви зробите [] обов'язковим? Ви б по-різному проектували літерали діапазону в мові програмування?
Кандидати
- стиль дужки: [0..10 [ , з кроком: [0..5..20 [
- позначення інтервалу: [0..10) з кроком: [0..5..20)
- вигук для ексклюзиву. 0 ..! 10, з кроком: 0..5 ..! 20
- з різним кроком. 0 ..! 20, 5
- однак це зробило б за замовчуванням * 0..10 ' включно-включно
- багатослівно: [0 до! 20 на 5]
Треба сказати, що моє улюблене в естетичному відношенні дорівнює 0 ..! 10 і 0..5 ..! 20 , я просто бажаю, щоб за замовчуванням 0..10 до включно-ексклюзивного було б більш логічним
1,5,10,15,20Проміжок 4, 5, 5, 5 ?!