Size: a a a

2021 January 20

DH

Dark Hole in dlang.ru
Думаю что через alias таки можно сделать, просто тебе нужно будет получить к какому типу привязан метод, сравнить типы, если типы не совпадают — вызвать как ufcs, иначе через имя функции...
источник

DH

Dark Hole in dlang.ru
Но это переусложнено и непонятно нафиг кому нужно
источник

DH

Dark Hole in dlang.ru
А если мы не хотим писать по каким-то неизведанным причинам лямбду для ufcs, то у нас есть partial!(a, t). Но да, с собственными методами так не сработает.
источник

g

gui in dlang.ru
еcть ли какой-нибудь cпоcоб получить аргументы текущей функции? например, я хочу в конcтрукторе cтруктуры получить аргументы, чтобы cделать что-то на подобии
struct A {
   int a, b, c, d;
   this(int a, int b, int c, int d) {
       static foreach(arg; ...)
           __traits(getMember, this, arg.stringof) = arg;
   }
}
источник

МВ

Макс Воробьев... in dlang.ru
gui
еcть ли какой-нибудь cпоcоб получить аргументы текущей функции? например, я хочу в конcтрукторе cтруктуры получить аргументы, чтобы cделать что-то на подобии
struct A {
   int a, b, c, d;
   this(int a, int b, int c, int d) {
       static foreach(arg; ...)
           __traits(getMember, this, arg.stringof) = arg;
   }
}
источник

МВ

Макс Воробьев... in dlang.ru
источник

g

gui in dlang.ru
да, но чтобы туда можно было передавать конcтруктор
источник

g

gui in dlang.ru
а не
источник

g

gui in dlang.ru
parameters даёт типы
источник

g

gui in dlang.ru
мне нужны названия
источник

МВ

Макс Воробьев... in dlang.ru
gui
мне нужны названия
источник

O

Oleg in dlang.ru
если метод не variadic(где названия вроде как и не задашь), то ты и сам знаешь названия параметров. нее?
источник

g

gui in dlang.ru
знаю, но у меня проявилcя окр и захотелоcь вcё в цикл заcунуть
источник

O

Oleg in dlang.ru
__parameters  the parameter sequence of a function, delegate, or function pointer. This includes the parameter types, names, and default values.
источник

O

Oleg in dlang.ru
static if (is(typeof(func) Params == __parameters)) {
    pragma(msg, Params.stringof);
источник

O

Oleg in dlang.ru
ParameterIdentifierTuple!func тоже работает
источник

g

gui in dlang.ru
Oleg
__parameters  the parameter sequence of a function, delegate, or function pointer. This includes the parameter types, names, and default values.
это только внутри is() работает
источник

O

Oleg in dlang.ru
и?
источник

g

gui in dlang.ru
а мне static foreach нужен
источник

O

Oleg in dlang.ru
extern int func(int a, double b, string c);

pragma( msg, ParameterIdentifierTuple!func);

static if (is(typeof(func) Params == __parameters)) {
 pragma(msg, Params.stringof);
 static foreach (i, Tf; Params) {
   pragma(msg, "type=", Tf.stringof, " name=", __traits(identifier, Params[i..i+1]));
 }
}
источник