
Oleg
29.10.2016
19:22:35

qwe
29.10.2016
19:24:22
так, а что метод возвращает?

Oleg
29.10.2016
19:24:54

Google

Oleg
29.10.2016
19:25:10
Вот так:
'hello' + ('(' '+('2')+')')

qwe
29.10.2016
19:26:15
язык, кажется, не статически типизированный

Oleg
29.10.2016
19:26:28
Статически еще как

qwe
29.10.2016
19:26:53
не вижу где указывается возвращаемый тип

Oleg
29.10.2016
19:27:42
Выводится автоматом
Разве в D не выводится?
Ну считай что везде auto стоит

qwe
29.10.2016
19:29:09
ну да, ну да
кстати эту бы фичу я бы убрал)

Oleg
29.10.2016
19:30:11
auto в D это не полный Хиндли-Милнер вывод типа я понимаю

Pavel
29.10.2016
19:31:08
Наверно тем что перестаешь понимать какого типа переменная

Google

qwe
29.10.2016
19:31:15
да
по return когда приходится искать, что возвращает метод, становится грустно

Pavel
29.10.2016
19:31:33
Для новичков это может быть проблемой, сам с таким сталкивался

Oleg
29.10.2016
19:31:53
Смотрите, полный вывод типов:
https://github.com/HaxeFoundation/haxe/blob/development/src/generators/genlua.ml
Этот код почти неубиваемый
(Щас еще подумаете на меня что я функциональщик)
enum opEqualsPart = "текст"
Это можно сделать ввиде обычного const? В чем суть такой записи?

qwe
29.10.2016
19:35:51
писать меньше)
шучу
знатоки меня поправят если что. enum a=1 эквивалент #define a 1. Или как там в С?

Sergey
30.10.2016
06:04:17
По-моему кое-кто обещал не пиарить больше haxe
если серьезно, насколько понимаю, Haxe нишевой язык, и ниша у него немного другая чем у D.
зачем их постоянно сравнивать?
в D это делается примерно так же. Могу конечно ошибаться, поскольку не знаю Haxe.
я уже много лет не работал ни с С, ни с С++ (поэтому могу даже какие-то вещи путать между ними) но насколько понимаю, ближайшим аналогом для define в D должен быть alias.
продал душу C# и прикладному программированию, о чем жалею

Dmitry
30.10.2016
07:18:35
Так, а если я хочу посмотреть как реализован switch мне его в core части искать языка или где?
почитал про паттерн матчинг в haxe. Был очень удивлен что haxe судя по синтаксису очень полноценный и приятный язык. Я раньше считал его каким-то кустарным поделием

Oleg
30.10.2016
17:29:21

Google

Oleg
30.10.2016
17:30:57
Просто пытаюсь понять идиоматику D


Sergey
30.10.2016
19:14:06
До сих пор подозревал, что проблема есть, но не упирался в нее. А теперь таки уперешвшись в нее, не могу в это поверить.
Элементарнейшая задача: понять, можно ли привести некую переменную к некоему типу.
И либо я уже не соображаю, так как у меня ночь, либо в D просто нет элегантного способа это сделать. castSwitch какой-то уж слишком громоздкий, и не очень подходит.
например есть классы A, B:A, С:B, у А есть метод meth(A heisenberg), который может быть переопределен в наследниках.
в B.meth мне нужно проверить можно ли heisenberg привести к B (в то время как heisenberg может быть типа B, C, или какого-нибудь другого наследника A).
typeof не годится - так как, в любом случае, будет возвращать A. typeid тоже не придумал как тут использовать, is, как и IsAssignable, работает только с типами,
classinfo - если только в цикле проходить по base, пока не упрусь в нужный TypeInfo_Class или null, но это решение какое-то грязноватое, по сравнению с привычным мне в C#: heisenberg is B
проверка должна быть rt
т.е. в static if представляю, как можно проверить можно ли привести переменную к типу.
чушь уже начал писать


Олег
30.10.2016
19:34:56
Приветствую! не рассматривали вариант: B b = cast(B)heisenberg, если не получается привести, то b is null

Oleg
30.10.2016
20:34:11
Кстати, это самый правильный вариант

Sergey
31.10.2016
03:11:38
да, про этот вариант забыл совсем, хотя, конечно, рассматривал изначально)
привычка использовать heisenberg is B заставляет предвзято относиться к варианту с исключениями, но, конечно же, это лучше чем castSwitch и прочие извраты

Dmitry
31.10.2016
12:58:28
Как я понимаю коллбек термин только из js? Тоесть когда в функцию другую функцию передаем как аргумент. В Ди аналогом этого что будет?

Pavel
31.10.2016
13:02:10
Не только из js конечно, это старый как мамонт термин

Grigirii
31.10.2016
13:02:31
это даже на русский успели перевести - обратный вызов

Pavel
31.10.2016
13:02:44
в ди тоже так можно сделать же, посмотри хотя бы стартовый исходник приложения vibe.d

Grigirii
31.10.2016
13:02:45
это просто паттерн программирования

Pavel
31.10.2016
13:02:57
Там в роутере передается колбек для индексной страницы

Dmitry
31.10.2016
17:13:18
Правильно ли я понимаю, что под этим понимается, то что передаваемая как аргумент функция исполнится в начале и только потом будет выполняться тело родителя?

Sergey
31.10.2016
17:18:45
передаваемая, как аргумент функция испольнится тогда, когда будет вызвана, если вообще будет
если я, конечно, правильно понял вопрос. Не совсем понятно, что подразумевается под "родителем". Может на прмерах?

0x9d8e
31.10.2016
17:20:29
я так понимаю речь про какой-то частный случай в vibe.d, не о поведении языка

Pavel
31.10.2016
17:23:28

Sergey
31.10.2016
17:25:20
кстати, раз уж речь зашла об обратных вызовах и соответсвующих паттернах, то в D есть своя версия событий - реализация паттерна Наблюдатель
signals
https://dlang.org/phobos/std_signals.html

Google

Dmitry
31.10.2016
17:45:10
А чем колбек полезен? Именно тем, что он дергается после выполнения основной функции?

0x9d8e
31.10.2016
17:46:41
Не после, а тогда когда функция посчитает нужным. И передаст в него аргументы какие посчитает нужным.

Sergey
31.10.2016
17:46:42
он дергается не после, а во время, а вернее, из

0x9d8e
31.10.2016
17:47:40
Может если я скажу, что коллбек == делегат станет яснее?

Dmitry
31.10.2016
17:48:30
нет, я с делигатами мало знаком. Представляю их себе конечно, но не сильно хорошо

0x9d8e
31.10.2016
17:49:34
Ну по-сути функция передаваяемая в качестве аргумента. Могу какой-нибудь синтетический пример привести

Admin
ERROR: S client not available

Dmitry
31.10.2016
17:50:15
да не, пока я примерно понимаю, только не совсем ясен момент когда оно дернется

0x9d8e
31.10.2016
17:50:21
Например делегат может быть передан в функцию сортировки в каачестве функции сравнения

Dmitry
31.10.2016
17:50:41
просто "когда функция посчитает нужным" мне не ясно т.е. как это выглядит то?

0x9d8e
31.10.2016
17:50:59
Там где функция (родительская) его вызовет

Dmitry
31.10.2016
17:51:07
а...

0x9d8e
31.10.2016
17:51:47
asd(zxc) {
...
zxc(); ///here
...
}

Dmitry
31.10.2016
18:15:57
а он будет в том же потоке работать?

Sergey
31.10.2016
18:17:07
да

Oleg
31.10.2016
18:18:32
Мб vide.d как-то разруливает, но на рейс кондишны лучше не натыкаться

Dmitry
01.11.2016
06:54:49
Кстати, не скажете, а Ди нормально с путями на шаре работает я про сетевые пути вида //

Evil
01.11.2016
07:34:52
Что значит «Ди работает»?
Берешь конкретный метод из конкретной библиотеки и смотришь.

Google

Dmitry
01.11.2016
07:41:01
Да я на новой работе хотел попробовать. Но уже сказали писать на питоне

qwe
01.11.2016
08:01:44

Pavel
01.11.2016
11:37:05
расскажи про новую работу)

Dmitry
01.11.2016
11:39:21
Давай в приват чтобы никто не ругался на оффтоп

qwe
01.11.2016
14:00:59
Как думаете нормально на форуме будет спросить о том, куда пропал один из членов D Language Foundation?

u13147
01.11.2016
14:01:29
Александреску?

Oleg
01.11.2016
14:02:49

qwe
01.11.2016
14:02:57
))

Grigirii
01.11.2016
14:03:05
а о ком речь?

qwe
01.11.2016
14:03:11
помню как-то mr. Nowak искали)
не, этого потерял https://github.com/Hackerpilot/

Oleg
01.11.2016
14:04:21
беда, если он потерялся
он же единственный dcd сканер пишет

qwe
01.11.2016
14:04:49
вот вот
ну ладно
может над ddmd сидит
и не выходит)

Sergey
01.11.2016
17:37:00
Александреску, конечно, молодец. Но в своей книге написал много всяких мелочей, не соответсвующих действиетльности