These are chat archives for dev-ua/rust

23rd
Jul 2016
mevsme
@mevsme
Jul 23 2016 14:34

Читаю доки по Расту, тількт почав, і бачу ось таке
let middle = &a[1..4]; // Срез `a`: только элементы 1, 2, и 3
От в мене вже біль внизу спини >_>
Ну блін, якщо слайс робить зріз 1,2,3 елементів
то на біса в квадратних дужках цифра 4???
Хіба не очевидно, що межі мають закінчуватись тією цифрою, ДО якої доходить межа і вклчати її. А не вказувати наступну цифру межі.
Тож завжид кажуть, що канікули до 25 серпня. І всім ясно, що 25 дома, а 26 прийти в школу.
Не кажуть же, що канікули до 26... Бо всі прийдуть 27. Не люблю такого.

Чи в америкосів по-іншому?

ну і цик for з ходу не зміг написати, схоже там теж якісь замути, ще не дійшов по мануалу до нього

Yuriy Yarosh
@yuriy-yarosh
Jul 23 2016 14:39
Ну це не тільки для Rust'a характерно, але й для Kotlin'у та Scala. Де закінчується range - питання суто абстрактне, то як пояснювать чому усі з нуля рахують.
Vladyslav Siriniok
@siriniok
Jul 23 2016 14:40
@mevsme бо це загальноприйнято. Не знаю звідки пішло. Насправді, так зручніше
Yuriy Yarosh
@yuriy-yarosh
Jul 23 2016 14:41
  • пішло з часів фортрану
Vladyslav Siriniok
@siriniok
Jul 23 2016 14:41
а трьох крапок в Rust нема?
Yuriy Yarosh
@yuriy-yarosh
Jul 23 2016 14:42
Нема
Paul Colomiets
@tailhook
Jul 23 2016 14:43
Ну как по мне это не то что-бы legacy, это удобно для избегания off-by-one bug's:
  1. a[0..3] -- возвращает 3 элемента
  2. a[2...7] -- возвращает 5 -- т.е. просто отнимаешь от старшего индексла младший
  3. a[0..2], a[2..5] -- разделить массив на два slice'а
Когда там переменные это еще более заметно
И три точки в rust'е есть... Но они не используются для slice'ов. И можно только в for'е или в match'е писать
Yuriy Yarosh
@yuriy-yarosh
Jul 23 2016 14:45
  • мав на увазі шо їх нема для слайсів
Vladyslav Siriniok
@siriniok
Jul 23 2016 14:45
а, стоп, у рубі інакше
 > [1, 2, 3, 4][1..4]                                                                
 => [2, 3, 4]
чи в раст так само?
я трохи туплю
mevsme
@mevsme
Jul 23 2016 14:50

отже, не так само )

але я в голові читаю "з першого по четвертий" і мені хочеться щоб було 4 значення, а не 3

Yuriy Yarosh
@yuriy-yarosh
Jul 23 2016 14:50

У рубі, так як каже @mevsme

array[start, length]
array[from..to]

У расті

array[from..to+1]

Тобто

array[0..4]

Поверне 4 елементи

mevsme
@mevsme
Jul 23 2016 14:50
This message was deleted
@yuriy-yarosh array[0..4] в Раст поверне 0, 1й, 2й і 3й
Yuriy Yarosh
@yuriy-yarosh
Jul 23 2016 14:53
Так, туплю
Vladyslav Siriniok
@siriniok
Jul 23 2016 14:55
я перевірив, в раст точно так само як в рубі
все логічно, бо так зручніше писати:
2.2.2 :025 > a = [1, 2, 3, 4]
 => [1, 2, 3, 4] 
2.2.2 :026 > a[1..a.size]
 => [2, 3, 4]
Yuriy Yarosh
@yuriy-yarosh
Jul 23 2016 14:57
Значить я туплю
Пам'ятаю що нотація '''array.slice(1, array.size())''' з'явилась ще в фортрані.
mevsme
@mevsme
Jul 23 2016 15:00
@siriniok *thumbs_up*, прояснилось
Vladyslav Siriniok
@siriniok
Jul 23 2016 15:01
@mevsme єдине, чого я не розумію — це чому тут дві точки, а не три
Yuriy Yarosh
@yuriy-yarosh
Jul 23 2016 15:02
Вирішили колись що три точки то забагато ...
mevsme
@mevsme
Jul 23 2016 15:05
що ти хоч, коли в них function це fn
економлять, йпрст
Vladyslav Siriniok
@siriniok
Jul 23 2016 15:07
ай, блін...
:smile:
всьо не так!
2.2.2 :034 > [1, 2, 3, 4, 5][1..4]   
 => [2, 3, 4, 5] 
2.2.2 :035 > [1, 2, 3, 4, 5][1...4]   
 => [2, 3, 4]
mevsme
@mevsme
Jul 23 2016 15:08
о-о-о )))
mevsme
@mevsme
Jul 23 2016 15:24
фа-а-а-ак, оце надлишковість %)
Yuriy Yarosh
@yuriy-yarosh
Jul 23 2016 15:26
Де саме ?
Vladyslav Siriniok
@siriniok
Jul 23 2016 15:26
x + 1
в чому надлишковість?
mevsme
@mevsme
Jul 23 2016 15:27
в /// для коментів
Vladyslav Siriniok
@siriniok
Jul 23 2016 15:27
а в чому прикол писати тип значення функції в кінці?
mevsme
@mevsme
Jul 23 2016 15:27
чому ж те саме не вілпити так
/*
бла-бла-бла
*/
Vladyslav Siriniok
@siriniok
Jul 23 2016 15:27
і в скалі так
mevsme
@mevsme
Jul 23 2016 15:29

а в чому прикол писати тип значення функції в кінці?

та до синтаксиса Раст в мене щось взагалі багато питань. Я не єдрьоний кодер, взагалі нічого не знаю і серйозно не працював.

Але в if зате можна упустити лапки )

if x == 5 {
    println!("x равняется пяти!");
}
Vladyslav Siriniok
@siriniok
Jul 23 2016 15:29
@mevsme так так ніхто не пише все одно
/*
*/
пишуть
/*
*
*
*/
mevsme
@mevsme
Jul 23 2016 15:31
/*
 * дуже часто бачив, як так роблять
 * і коментити куски коду можна легко і швидко
 * і по ходу в Раст такого нема, що, імхо брєд
 */
Andrii
@j2ko
Jul 23 2016 15:32
ну в пайтоні теж саме
if x == 5:
    print "something"
Vladyslav Siriniok
@siriniok
Jul 23 2016 15:32
@mevsme нафіга такий коментар, скажи?
найкращі коментарі — це #
Andrii
@j2ko
Jul 23 2016 15:34
ну растамани ще пожаліли - могли <!-- --> забабахити )
Vladyslav Siriniok
@siriniok
Jul 23 2016 15:34
як в жс, ага
mevsme
@mevsme
Jul 23 2016 15:34

Можна описати функцію і список параметрів, що вертає
Потім докерами задокументувати
А ще закоментити великий кусок кода швидко

решітку ніколи не використовував

В Раст така ж ідея
/// от тут іде опис
/// і параметри
/// і приклад
/// але три похилих лінії... це дофіга

Мова про те, що cинтаксис Rust намагались зробити мінімальістичним, а потім таке бачиш, і відразу запитання виникають: как, зачем, почему

Це відповідь на

нафіга такий коментар

Vladyslav Siriniok
@siriniok
Jul 23 2016 15:38
ну так, могли б обійтися двома //
або решіткою
Andrii
@j2ko
Jul 23 2016 15:38
ну // і /**/ це прості коменти - а от /// це вже для генерування доки
Vladyslav Siriniok
@siriniok
Jul 23 2016 15:39
ну якщо для доки, то норм
але якось хз
mevsme
@mevsme
Jul 23 2016 15:41
@j2ko до речі, я з Яху перейшов на якісь інші доки, і там нічого не було сказано про \* ... */
Я ще не перевірив, що їх справді можна використовувати, а в мене вже почало бомбити
Andrii
@j2ko
Jul 23 2016 15:43
@mevsme варто задуматись про зміну пошуковика )
mevsme
@mevsme
Jul 23 2016 15:43
Тобто я подумав, що таких нема )
Vladyslav Siriniok
@siriniok
Jul 23 2016 15:43
і чому ти читаєш російську доку, якщо ти вчитель англійської?
mevsme
@mevsme
Jul 23 2016 15:43
Так, мабуть )
Vladyslav Siriniok
@siriniok
Jul 23 2016 15:45
в перекладах завжди будуть неточності
і щось застаріле
надто для такої мови
mevsme
@mevsme
Jul 23 2016 15:45

Хочу сконцентруватись на суті, а не відвоілкатись на переклад невідомого.

Я читаю про С англійською, норм іде, і навіть комфортно, бо не потрібно думати, яке ж саме слово має на увазі російський переклад.

Коли писатиму, то ясен пень, що доки англ.мовою будуть. А зараз хочу без напрягу, по-швидкому.

Велику роботу все-таки люди проробили.

Згоден, згоден.
Я вже давно ніякої іншої крім англійської в пошукових запитах не використовую, і оточення на компі теж виключно англ.мовою.
Просто так склалось, побачив, що люди закінчили переклад... а тут ще на очі попадалось пару статей, який класний Раст... прям як зорі збіглись

І я якраз мав засіти і вчити якусь низькорівневу мову.
Так що от так от.

Vladyslav M.
@dywedir
Jul 23 2016 22:11

И три точки в rust'е есть... Но они не используются для slice'ов. И можно только в for'е или в match'е писать

есть и для срезов (nightly)