Size: a a a

2020 December 27

OB

Oleg B in dlang.ru
Dark Hole
Чо мне ошибку до сам алиас не дал?
а вдруг ты хотел не использовать a.a, а получить его тип или идентификатор?
источник

DH

Dark Hole in dlang.ru
Oleg B
а вдруг ты хотел не использовать a.a, а получить его тип или идентификатор?
🤔
источник

DH

Dark Hole in dlang.ru
Логично, не подумал
источник

DH

Dark Hole in dlang.ru
Но жалко конечно что нельзя так использовать алиасы
источник

OB

Oleg B in dlang.ru
Dark Hole
Но жалко конечно что нельзя так использовать алиасы
а для чего?
источник

DH

Dark Hole in dlang.ru
Oleg B
а для чего?
Можно создавать объекты которые существуют только в кт. Например, что бы ограничить доступ к определённым полям объекта.
источник

OB

Oleg B in dlang.ru
вижу только одно применение и его можно написать так:
import std.stdio;

struct Bar { int field; }
struct Foo { Bar bar; }

void main()
{
   auto foo = Foo(Bar(42));

   ref ff() @property { return foo.bar.field; }

   writeln(foo);
   writeln(ff);

   ff = 123;
   writeln(foo);
}
источник

OB

Oleg B in dlang.ru
Dark Hole
Можно создавать объекты которые существуют только в кт. Например, что бы ограничить доступ к определённым полям объекта.
ничего не понял
источник

DH

Dark Hole in dlang.ru
Oleg B
ничего не понял
Короче как в aslike только без промежуточного типа с делегатами.
источник

OB

Oleg B in dlang.ru
Dark Hole
Короче как в aslike только без промежуточного типа с делегатами.
тож не понял
ты хочешь передать что-то куда-то? если это шаблонный параметр можно делать хитрости, а если это какой-то конкретный тип не шаблонный, то он должен содержать что-либо, чтобы что-то передавать (делегаты те же)
источник

OB

Oleg B in dlang.ru
aslike как раз, чтобы функции и методы куда передавались объекты не были шаблонными, но при этом работали не только с классами
источник

DH

Dark Hole in dlang.ru
Oleg B
тож не понял
ты хочешь передать что-то куда-то? если это шаблонный параметр можно делать хитрости, а если это какой-то конкретный тип не шаблонный, то он должен содержать что-либо, чтобы что-то передавать (делегаты те же)
Я хочу так:
template Wrap(alias obj) {
 alias i = obj.i;
}

struct A {
 int i, j;
}

A a;
alias safeA = Wrap!a;
writeln(b.i); // => writeln(a.i);
writeln(b.j); // CT error
источник

OB

Oleg B in dlang.ru
Dark Hole
Я хочу так:
template Wrap(alias obj) {
 alias i = obj.i;
}

struct A {
 int i, j;
}

A a;
alias safeA = Wrap!a;
writeln(b.i); // => writeln(a.i);
writeln(b.j); // CT error
b это safeA?
источник

DH

Dark Hole in dlang.ru
Oleg B
b это safeA?
Да
источник

OB

Oleg B in dlang.ru
Dark Hole
Я хочу так:
template Wrap(alias obj) {
 alias i = obj.i;
}

struct A {
 int i, j;
}

A a;
alias safeA = Wrap!a;
writeln(b.i); // => writeln(a.i);
writeln(b.j); // CT error
ну так это можно так же сделать как я написал до этого
источник

OB

Oleg B in dlang.ru
Oleg B
ну так это можно так же сделать как я написал до этого
хотя да, там будет чутка больше кода
источник

DH

Dark Hole in dlang.ru
Oleg B
ну так это можно так же сделать как я написал до этого
В плане, через property?
источник

DH

Dark Hole in dlang.ru
Ну лучше тогда уже делать как в aslike
источник

DH

Dark Hole in dlang.ru
Теряется смысл по большей части
источник

OB

Oleg B in dlang.ru
Dark Hole
Теряется смысл по большей части
так а в чём смысл?
источник