
Maxim
08.06.2017
03:51:32
ну так semantic versioning 0.0.X для багфиксов, 0.X.0 для новых версий и X.0.0 для новых несовместимых версий, все логично)

Dmitry
08.06.2017
04:35:36
http://code.dlang.org/packages/drmi
Хинт: "реализация" по-английски это implementation. A realization это "осознание", вообще не о том. Когда ты что-то понял, осознал, это realized. А когда сделал, это implemented.

Denis
08.06.2017
05:00:09
нормальный рунглиш, понятный
Remote Method Invocation -> Remote Method Calling?

Google

Evil
08.06.2017
05:25:01
да

Denis
08.06.2017
05:28:25
Вроде-бы есть спрос на двунаправленную RPC-связь, типа как по сокету, но с разруливанием коллизий и прочего.
чтобы коннект был один (или не один, а какая-то одна абстракция)

Oleg
08.06.2017
07:57:11

Denis
08.06.2017
08:05:38
Непонятная штука, не понял для чего оно
Типа, описываешь прототип функции и можно её запускать на сервере и ждать ответа?

Oleg
08.06.2017
08:09:24
при этом не меняешь код, потому что ты работаешь с интерфейсом

Denis
08.06.2017
08:10:23
И добавляется ещё один эксепшн, котрый надо отлавливать)
(связанный с сетью)

Oleg
08.06.2017
08:10:42
это мелочи

Александр
08.06.2017
08:26:50

Denis
08.06.2017
08:27:17
Ужс

Google

Александр
08.06.2017
08:27:34
могу подогнать решение на них же

Oleg
08.06.2017
08:33:22
я бы взглянул, конечно)

Александр
08.06.2017
08:37:34
Если в упрощённом виде, то
template <class R, class... Args> std::tuple<Args...> ExtractArgs(R (*)(Args...)); // функция
template <class T, class R, class... Args> std::tuple<Args...> ExtractArgs(R (T::*)(Args...)); // метод
template <class T, class R, class... Args> std::tuple<Args...> ExtractArgs(R (T::*)(Args...) const); // константный метод
int foo(int, double) { /* ... */ }
using FooArgsAsTuple = decltype(ExtractArgs(&foo)); // std::tuple<int, double>

Oleg
08.06.2017
08:40:52
не, я не про это говорил
да D эквивалентный код будет таким, как я понимаю auto args = Parameters!foo.init

Александр
08.06.2017
08:41:37
так нужны типы аргументов или их значения?

Oleg
08.06.2017
08:41:46
мне нужно было сделать универсальный mixin, чтобы при вставке в тело метода/функции он мог получить значения аргументов

Александр
08.06.2017
08:42:15
если функция не variadic, то вряд ли вытащить

Oleg
08.06.2017
08:42:57
мне приходила мысль взять указатель на стрек, но я сразу от неё отказался
не кроссплатформенно, да и в целом жесть какая-то
в этой ситуации создание самих методов было под контролем, поэтому решил не заморачиваться

qwerty
08.06.2017
17:43:45
Dmd сообщает о неиспользуемом коде?

Dmitry
08.06.2017
17:43:59
да

Pavel
08.06.2017
17:44:09
Я наталкивался на такое что он даже скомпилировать не дает
Что кстати не очень удобно

Shorty(Ale Chapa) Manskiy
08.06.2017
17:44:42
Я давно уже не использовал D, но когда использовал, то он не сообщал. Не думаю что сейчас что-то изменилось.

qwerty
08.06.2017
17:45:49

Pavel
08.06.2017
17:46:01
Не, с обычным
Ну я там вводил dub build

Shorty(Ale Chapa) Manskiy
08.06.2017
17:46:53
Вы кажется что-то путаете...

Google

Shorty(Ale Chapa) Manskiy
08.06.2017
17:46:53
да
Я наталкивался на такое что он даже скомпилировать не дает

qwerty
08.06.2017
17:46:53
Странно, у меня не ругается (

Pavel
08.06.2017
17:47:18
Точно было, если в функции после return; написать какой-то код еще.

qwerty
08.06.2017
17:49:07
Да не, я имею ввиду неиспользуемую переменную или поле структуры
Ну кажется нашел https://issues.dlang.org/show_bug.cgi?id=17424

Shorty(Ale Chapa) Manskiy
08.06.2017
17:50:19
вроде нету там такого, DScanner в некоторых случаях может указать на такое.

qwerty
08.06.2017
17:50:21
Видно нету
Ну да, о нем и пишут как раз тоже

Denis
09.06.2017
01:02:43

Dmitry
09.06.2017
10:20:04
Я помню в Фобосе была фишка какая-то чтобы по элементам шагать с определенным шагам никак ее найти не могу. Может кто помнит? типа каждый ворой элемент брать

Pavel
09.06.2017
10:35:11
что-то из ranges вроде

Dmitry
09.06.2017
10:35:22
нашел stride называется
а строку к чарам можно без dup кастануть?

Denis
09.06.2017
10:38:53
с целью?

Dmitry
09.06.2017
10:39:26
мне нужно по ней map! сделать

Denis
09.06.2017
10:39:54
строка это массив же
иммутабельный

Dmitry
09.06.2017
10:40:42
а как можно по ней map сделать? чтобы элементы поменять?

qwerty
09.06.2017
10:40:42
auto arr = [0,1,2,3];
writeln(arr.length.iota.filter!((index) => index % 2 == 0).map!((index) => arr[index]));
не то случайно о_О ?

Google

Dmitry
09.06.2017
10:41:03
м...

qwerty
09.06.2017
10:41:30
или прям совсем была готовая функция для получения четных элементов?

Dmitry
09.06.2017
10:41:42
stide позволяет шаг указывать
мне просто нужно каждый второй элемент поменять

qwerty
09.06.2017
10:41:51
аа
сори
пропустил

Dmitry
09.06.2017
11:24:06
auto x = str.map!(a=> a.replace(a, 't'));
чnо не так делаю?
Error: template std.array.replace cannot deduce function from argument types !()(dchar, dchar, string), candidates are:

Shorty(Ale Chapa) Manskiy
09.06.2017
11:26:40
что это такое a => a.replace(a, 't') ?

Dmitry
09.06.2017
11:27:12
пытаюсь через map! символы заменить

Admin
ERROR: S client not available

Shorty(Ale Chapa) Manskiy
09.06.2017
11:28:18
map!"'t'"
что ты вообще хочеш там сделать?

Dmitry
09.06.2017
11:30:58
каждый символ на букву t поменять

Shorty(Ale Chapa) Manskiy
09.06.2017
11:31:44
в строке str?

Dmitry
09.06.2017
11:32:07
да

Shorty(Ale Chapa) Manskiy
09.06.2017
11:32:35
str[] = 't'
но ты должен учитывать что размер у букв может быть разным...

Dmitry
09.06.2017
11:33:39
Вот такой вариант сработал:
auto x = str.map!(a=> a='b');

Shorty(Ale Chapa) Manskiy
09.06.2017
11:33:54
строка не изменилась.

Google

Dmitry
09.06.2017
11:34:09
ну пусть хоть в копии будет
а хотя не в копии не устроит

Shorty(Ale Chapa) Manskiy
09.06.2017
11:34:26
какой еще копии?

Dmitry
09.06.2017
11:34:28
я могу по ссылке менять?
ну оригинальную строку я могу менять?

Shorty(Ale Chapa) Manskiy
09.06.2017
11:34:59
только если она не immutable
str[] = 't'

Dmitry
09.06.2017
11:36:11
string str = "xxxxx";
auto x = str.stride(2).map!(a=> a='b');
writeln("x: ", x);
теперь в x у меня замененный каждый второй символ, но мне бы каждый первый заменить на a а каждый второй на b

Shorty(Ale Chapa) Manskiy
09.06.2017
11:39:59
x это range, а не строка...
и я незнаю что делает stride, но не думаю что это то что тебе нужно. а возможности (желания) проверить у меня сейчас нету. Но str в любом случае не изменилась.

Oleg
09.06.2017
11:41:12
Нужно просто понять, что строки не нужно менять)

Maxim
09.06.2017
11:47:50
ну либо кастовать их в набор байтов, если очень хочется)
ну или чаров нужного типоразмера)

qwerty
09.06.2017
12:00:37
char[] str = "xxxxx".to!(char[]);
auto indexes = str.length.iota.stride(2);
indexes.each!(a => str[a] = 'b');

Dmitry
09.06.2017
12:04:44
спасибо

qwerty
09.06.2017
12:10:41
?

Shorty(Ale Chapa) Manskiy
09.06.2017
15:58:58

Pavel
09.06.2017
15:59:38
Чем не очень и чем лучше?

Shorty(Ale Chapa) Manskiy
09.06.2017
16:00:02
ну посмотри получше.

qwerty
09.06.2017
16:00:14
видно происходит копирование char[] str = "xxxxx".to!(char[]);
Да и массив с индексами надо создать

Pavel
09.06.2017
16:01:31
Ну это из серии каких-то микрооптимизаций в стиле си. Тут без надобности можно не делать.

qwerty
09.06.2017
16:02:04
да нет на самом деле, но я написал такое решение потому что очевидно вариант с циклом чем-то не подходил

Shorty(Ale Chapa) Manskiy
09.06.2017
16:02:20