@dlangru

Страница 443 из 719
Pavel
08.03.2018
14:22:55
Это вроде называется деструктуризация

Dark
08.03.2018
14:22:58
Я имел ввиду деструктуризацию

Спутал термины, да

:D

Google
Evgeny
08.03.2018
14:24:04
еще про нехватку паттерн-матчинга вспомни ?

Pavel
08.03.2018
14:24:24
Dark
08.03.2018
14:24:32
О, как

Evgeny
08.03.2018
14:24:46
Pavel
08.03.2018
14:24:50
да

Dark
08.03.2018
14:25:02
Кинь пример, если не затруднит

Pavel
08.03.2018
14:25:09
https://en.wikipedia.org/wiki/C%2B%2B17

Evgeny
08.03.2018
14:25:15
я как-то упустил этот момент. какой-то новый operator ввели?

Structured binding declarations, allowing auto [a, b] = getTwoReturnValues();

Dark
08.03.2018
14:26:42
Вот-вот

Pavel
08.03.2018
14:27:21
Так вот же запилили) https://gist.github.com/valmat/763c72465d7a1737229ae1c91393d629

И впринципе если заморочиться то даже и с автообъявлением можно запилить, написав кусок кода в компайл тайме и вставив его как шаблон.

Oleg
08.03.2018
14:31:59
Google
Dark
08.03.2018
14:32:50
Так вот же запилили) https://gist.github.com/valmat/763c72465d7a1737229ae1c91393d629
Там Array ну и вообще это костыль, так-то Но возьму на заметку

Pavel
08.03.2018
14:33:52
Где array и в чем костыль ?

Evgeny
08.03.2018
14:34:08
Я не про внутреннее представление, а про разницу 'в обиходе'
Описанная тобой разница есть только в случае анонимной структуры. А так никто не мешает объявить структуру где-нибудь извне и возвращать ее из разных функций. Тот же Tuple получится.

Я практически не пользуюсь фобосовским Tuple, не нравится он мне.

Pavel
08.03.2018
14:34:47
В язык не встроено только, но даже если это и встроить в язык, то реализация и будет такая же как в этом гисте, ну может чуть посложнее.

Dark
08.03.2018
14:36:16
Где array и в чем костыль ?
Квадратные скобочки - не массив?

Pavel
08.03.2018
14:36:35
Не понял

Массив а что

Dark
08.03.2018
14:37:08
Так там реализация для массива, не?

Pavel
08.03.2018
14:37:15
Не

Там из синтаксиса только то что tie() писать надо вокруг переменных в которые хочешь деструктурировать

Если хочется совсем без всего, только с запятыми, то тогда уже придется в компилятор лезть, а так вот довольно просто в компайл тайме делается

Dark
08.03.2018
14:43:31
Но все таки было бы гораздо круче, если бы D это поддерживал на уровне компилятора

Pavel
08.03.2018
14:50:46
нашел дип https://wiki.dlang.org/DIP32

Если его не форсируют значит особо и не нужно никому

Dark
08.03.2018
14:53:03
Не факт

Pavel
08.03.2018
15:13:41
Посмотрел на тюплы в ди и плюсах, пришел к выводу, что в сравнении с питоновскими они малополезны.

Такова селявя.

Dark
08.03.2018
15:18:58
Т.е. их либо надо расширять, либо убирать?

Pavel
08.03.2018
15:20:23
Может, срастить со списком параметров, но это должно было закладываться изначально.

Google
Pavel
08.03.2018
15:21:01
А то имеем два вида тюплов.

Dark
08.03.2018
15:21:23
В смысле?

Pavel
08.03.2018
15:22:00
https://dlang.org/tuple.html

Есть-пить не просят - пусть пылятся до востребования.

Dark
08.03.2018
15:25:22
Увы

Но все равно хотелось бы когда нибудь увидеть auto (x, y) = getXY;

Pavel
08.03.2018
15:39:41
по-питоновски: https://glot.io/snippets/eyzavlpomm

Dark
08.03.2018
15:44:21
А аналогичный код на питоне?

Pavel
08.03.2018
15:46:28
Нет смысла писать аналогичный код. Питон и все другие интеретируемые языки дают возможность писать с максимальным количеством сахара и отсутствием заморочек ценой отъедания 10-100x ресурсов

То есть понятно что будет короче и красивее, на то и динамизм. Быстро красиво пишем и потом виртуалка перемалывает десятки мегабайт код снова и снова

Pavel
08.03.2018
15:47:17
А аналогичный код на питоне?
https://glot.io/snippets/eyzb3fleug

Pavel
08.03.2018
15:48:09
Походу поэтому и тупли не в почете в ди. Вроде бы сэкономим пару символов на красоту деструктуризации, зато все равно придется писать портянки кастов, шаредов и иммутабл

Dark
08.03.2018
15:49:15
Походу поэтому и тупли не в почете в ди. Вроде бы сэкономим пару символов на красоту деструктуризации, зато все равно придется писать портянки кастов, шаредов и иммутабл
Не вижу логики. Если у нас по любому будет портянка кастов и иммутаций, то значит удобство программирования не важно?

Pavel
08.03.2018
15:49:53
Да, значит удобство некоторых конструкций статистически не значимо

Dark
08.03.2018
15:52:21
Тут можно поспорить, но я не хочу опять в бан

Тогда вопрос

Pavel
08.03.2018
15:52:50
То есть вместо aa[cast(immutable)(variantArray("str", 1))] = 42; aa[cast(immutable)(variantArray("str", 1, 2))] = 43;написать aa[cast(immutable)(variantArray("str", 1))] , aa[cast(immutable)(variantArray("str", 1, 2))] = {42, 43};cильно ли приятнее будет?

Dark
08.03.2018
15:53:38
Я не про этот случай

Аа

Понял

Google
Dark
08.03.2018
15:54:28
Я подумал про другое

Оное в D не нужно от слова совсем

Dmitry
08.03.2018
16:24:18
Так вот же запилили) https://gist.github.com/valmat/763c72465d7a1737229ae1c91393d629
Я тоже такое делал несколько лет назад еще. let (name, age) = getTuple(); // tuple let (x,y,z) = argv[1..4].map!(to!int); // lazy range let (x,y,z) = [1,2,3]; // array https://bitbucket.org/infognition/dstuff

Valeriy
08.03.2018
17:20:58
Там Array ну и вообще это костыль, так-то Но возьму на заметку
Там не массивы. Там ranges и туплы. Ну и массивы, как частный случай

Но все равно хотелось бы когда нибудь увидеть auto (x, y) = getXY;
Есть уже предложение https://github.com/tgehr/DIPs/blob/tuple-syntax/DIPs/DIP1xxx-tg.md#proposal-1-unpacking-declarations

Вот я писал. Ответили, что рассматривается https://forum.dlang.org/post/wzmvxoqvnqximpkkqnvn@forum.dlang.org

Так вот же запилили) https://gist.github.com/valmat/763c72465d7a1737229ae1c91393d629
Код из этого гиста я немного оптимизировал и вынес в реп на гитхаб: https://github.com/valmat/vest#tie

Tom
08.03.2018
17:31:14
народ, подскажите не настоящему сварщику - есть возможность импорта сторонних DLL напрямую? Что-то не нахожу, можно ли в винде OpenGL.dll импортировать

Dark
08.03.2018
17:44:52
Есть уже предложение https://github.com/tgehr/DIPs/blob/tuple-syntax/DIPs/DIP1xxx-tg.md#proposal-1-unpacking-declarations
Интересно, можно за него как-нибудь прогологосовать?

Valeriy
08.03.2018
18:21:55
Admin
ERROR: S client not available

Dark
08.03.2018
18:25:26
Линковка для линукса, не?

Valeriy
08.03.2018
18:31:39
Линковка для линукса, не?
На винде наверное тоже можно. Никогда не интереснвался. Но не вижу причин, почему нельзя на винде.

Pavel
08.03.2018
18:42:28
Тут можно посмотреть: https://wiki.dlang.org/Win32_DLLs_in_D И тут: https://github.com/DerelictOrg/DerelictGL3

Pavel
08.03.2018
20:51:11
вайбовский десереализатор json в структуры не умеет игнорировать лишние поля и падает с ошибкой =(

Evgeny
09.03.2018
05:49:01
вайбовский десереализатор json в структуры не умеет игнорировать лишние поля и падает с ошибкой =(
да, слабоват он. поэтому я отказался от него, еще и проблем огреб, когда Сонке начал везде @safe лепить.

Denis
09.03.2018
07:52:40
@deviator http://code.dlang.org/develop#package-scoring видел? всё как вы хотели

теперь будет что накручивать

Evgeny
09.03.2018
08:52:43
Это должно настраиваться.

Google
Denis
09.03.2018
08:57:18
по принципу "не использовать эксепшены как часть нормальной работы"? согласен

смотрите чего обнаружил: dub не следует semver: https://semver.org/ Given a version number MAJOR.MINOR.PATCH, increment the: MAJOR version when you make incompatible API changes, MINOR version when you add functionality in a backwards-compatible manner, and PATCH version when you make backwards-compatible bug fixes. Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format. А у нас DUB считает что минорная версия уже ломает совместимость.

может оно и к лучшему, конечно, но это, имхо, приучило всех нас тоже не следовать semver

Dmitry
09.03.2018
09:08:20
Крупные контнторы уже давно забили на semiver. Методология разработки "релиз любой ценой" убивает тщательное планирование продукта

Denis
09.03.2018
09:11:59
? semver оно вообще про другое

Denis
09.03.2018
09:49:24
не сработало для vibe-core при пеерезде с 1.3.0 на 1.4.0

Evgeny
09.03.2018
09:50:16
это еще чо, вон у DMD последняя цифра меняется и все :)

Dark
09.03.2018
09:52:26
Не самое плохое, я видел у одного продукта MAJOR.MINOR причем с прыжками минора. Например с 0.62 прыгнули на 0.70

Так что единственный, кто следует semver - linux

Denis
09.03.2018
10:24:48
это еще чо, вон у DMD последняя цифра меняется и все :)
подразумевается что ничего не ломается а патчится

Pavel
09.03.2018
10:50:02
Dark
09.03.2018
11:57:35
Интересно, а реализация дефолтных параметров в D может использоваться для библиотек?

Dark
09.03.2018
12:03:39
Ну, в шарпе функция просто помечает дефолтные параметры, а компилятор подставляет их. Если мы добавим такую функцию в библиотеку, нам надо будет пересобирать с библиотекой все ПО основанное на ней

Dark
09.03.2018
12:43:12
А разве никто не может просто генерировать обертку?

Типо так: void func(bool def = true) { ... } // компилируется как void func(bool def) { ... } void func() { func(true); }

Denis
09.03.2018
12:50:39
при линковке непонятки будут, но можно, вроде. может так и устроено, кстати.

Dark
09.03.2018
12:54:29
Про линковку поподробнее, пожалуйста

Страница 443 из 719