Привет всем!
Почему не компилируется следующий код?
[Record]
class Person
{
[Accessor] name_ : string;
}
module Program
{
Main() : void
{
def lst = [ Person("John"), Person("Jane"), Person("Hannah") ];
def lst = lst.Filter( "John" != _.Name ); // Почему так нельзя?
_ =ReadKey();
}
}
Спасибо.
Здравствуйте, SergASh, Вы писали:
SAS>Привет всем!
SAS>Почему не компилируется следующий код?
SAS>...
SAS> def lst = lst.Filter( "John" != _.Name ); // Почему так нельзя?
...
SAS>
Ну, потому что это не только частичное применение уже
_.Name
это x => x.Name
"Jonh" != (x => x.Name)
это не x => ("John" != x.Name)
Протаскивание _ на верхние уровни неоднозначно (как минимум есть возможность протащить на самый верх, сделав lst функцией), с другой стороны работающая запись с "x =>" не так уж и длинна, так что все вполне логично
Здравствуйте, Иванков Дмитрий, Вы писали:
ИД>Ну, потому что это не только частичное применение уже
Ага. И надо бы поработать над сообщениями компилятора в подобных случаях. А то с непривычки запутаться очень просто.
... << RSDN@Home 1.2.0 alpha rev. 637>>