C# vs. Nemerle инициализация полей выражением
От: _NN_ www.nemerleweb.com
Дата: 06.03.12 08:37
Оценка:
Звучит логично.

class A
{
  x : int = (() => { def m = 1; m; })();
}

Все компилируется.

class A
{
  readonly int x = (() => { var m = 1; return m; })();
}

a.cs(5,20): error CS0149: Method name expected


1-0 в пользу Nemerle
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: C# vs. Nemerle инициализация полей выражением
От: hardcase Пират http://nemerle.org
Дата: 06.03.12 09:15
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>Звучит логично.


_NN>
_NN>class A
_NN>{
_NN>  x : int = (() => { def m = 1; m; })();
_NN>}
_NN>

_NN>Все компилируется.

Что-то здесь явно лишнее:
class A
{
  x : int = { def m = 1; m };
}
/* иЗвиНите зА неРовнЫй поЧерК */
Re[2]: C# vs. Nemerle инициализация полей выражением
От: _NN_ www.nemerleweb.com
Дата: 06.03.12 09:20
Оценка:
Здравствуйте, hardcase, Вы писали:

  Скрытый текст
H>Здравствуйте, _NN_, Вы писали:

_NN>>Звучит логично.


_NN>>
_NN>>class A
_NN>>{
_NN>>  x : int = (() => { def m = 1; m; })();
_NN>>}
_NN>>

_NN>>Все компилируется.

H>Что-то здесь явно лишнее:

H>
H>class A
H>{
H>  x : int = { def m = 1; m };
H>}
H>


Конечно, это правильней. Я как раз хотел сравнить именно то, что в C# вполне могло бы работать.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[3]: C# vs. Nemerle инициализация полей выражением
От: hardcase Пират http://nemerle.org
Дата: 06.03.12 09:57
Оценка: 5 (1) +1
Здравствуйте, _NN_, Вы писали:

_NN>Конечно, это правильней. Я как раз хотел сравнить именно то, что в C# вполне могло бы работать.


C# не может вывести тип делегата лябды, его нужно указать каким-либо образом:
class A
{
  readonly int m = new Func<int>(() => { var x = 1; return x; })();
}
/* иЗвиНите зА неРовнЫй поЧерК */
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.