Это не работает в D:
void doSomething(auto a, auto b){
// ...
}
Мне просто любопытно, будет ли это когда-нибудь работать?Или это просто технически невозможно?(Или просто глупый?)
В любом случае, может ли это быть достигнуто любым другим способом?Я полагаю, что могу использовать ...
и просмотреть список аргументов, но я вроде как создаю библиотеку для ленивых новичков и хочу, чтобы они могли легко создавать функции, не заботясь о типах данных.Я играю с идеей создания структуры под названием var
, как
struct var{
byte type;
void* data
// ...
}
// and overload like all operators so that a lazy devver can do
var doSomething(var a, var b){
if(a == "hello")
b = 8;
var c = "No.:" ~ b ~ " says:" ~ a;
return c;
}
Но моя голова уже начинает болеть прямо там.И я чувствую, что что-то упустил.Я также до боли осознаю, что это, вероятно, для чего нужны шаблоны ... Они?Из того, что я знаю, шаблон выглядел бы так (?)
void doSomething(T, U)( T a, U b){
// ...
}
Но теперь он уже не выглядит таким чистым.Может быть, я получаю все это задом наперед.Может быть, мое замешательство связано с моим убеждением, что auto
- это динамический тип, сравнимый с var
i javascript, но когда на самом деле это что-то другое?это, наверное, совсем другая тема, возможно ли ее создать?Или, может быть, есть ли библиотека с открытым исходным кодом?Может быть, клевета?
(PS. Да, может, ленивый девер это я:)