Здравствуйте, nikov, Вы писали:
N>Как написать аналогичный код на Nemerle?
N>N>class C
N>{
N> static void Foo<T>(T x = default(T)) { }
N>}
N>
ТеорияАвтор: konsoletyper
Дата: 26.12.06
гласит, что должно быть так:
module C
{
Foo[T](x : T = Nemerle.Extensions.DefaultValue(T)) : void {}
}
Однако макрос DefaultValue не является literal и код не компилируется.
Workaround:
module C
{
Foo[T](x : T) : void {}
Foo[T]() : void
{
mutable x : T; // mutable автоматически инициализируются в default(T)
Foo(x);
}
}
P.S.
Если не указать ": T" то выводится тип object, вместо T