Re: Как объявить optional параметр?
От: _nn_ www.nemerleweb.com
Дата: 29.05.11 11:43
Оценка:
Здравствуйте, 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
http://rsdn.nemerleweb.com
http://nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.