Опечатка в Grokking Nemerle?
От: Аноним  
Дата: 23.06.10 12:02
Оценка:
Документ Grokking Nemerle, который поставляется вместе с компилятором. Раздел Grok Variants and matching. Код примера:

class Foo {
  public number : int;
  public name : string;
}
 
StringOfFoo (f : Foo) : string
{
  if (f.name == "")
    f.number.ToString ()
  else
    f.name
}
 
// do the same as above
StringOfFooMatch (f : Foo) : string
{
  match (f) {
    | Foo where (name = "", number = k) =>
      k.ToString ()
    | Foo where (name = s) => 
      s
  }
}


Тут должно быть when вместо where?

24.06.10 00:46: Перенесено модератором из 'Интеграция Nemerle и Visual Studio' — VladD2
Re: Опечатка в Grokking Nemerle?
От: Аноним  
Дата: 23.06.10 12:24
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Тут должно быть when вместо where?


Вроде бы нет. А что говорит компилятор?
Re: Опечатка в Grokking Nemerle?
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.06.10 20:47
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Тут должно быть when вместо where?


В примере все правильно. Это специальный вид парттерна. Только информация немного устарела, так как теперь этот вид паттерна больше чем "if". Он так же позволяет проверять полиморфные типы данных. Так что в примере можно передавать базовый тип (что невозможно в случае с if-ом).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.