Вот, пытаюсь переписать код из С#-style в правильный Nemerle.
В начале было так:
//найти в словаре значение и вернуть его ключ
mutable vv = -1;
foreach(k in Card.ValencyDict.Keys)
{
when( Card.ValencyDict[k] == v )
{
vv = k;
break;
}
Мой пораженный императивщиной мозг выдал такой ужас:
def vv():int {
-1;
foreach(k when Card.ValencyDict[k] == v in Card.ValencyDict.Keys)
{
k;
}
}
Valency = vv();
Но и тот на первой строке ругается: expected int, got void in assigned value: void is not a subtype of int
Здравствуйте, MAMOHT, Вы писали:
MAM>Добрый день.
MAM>Вот, пытаюсь переписать код из С#-style в правильный Nemerle.
MAM>В начале было так:
MAM>
MAM>//найти в словаре значение и вернуть его ключ
MAM>mutable vv = -1;
MAM>foreach(k in Card.ValencyDict.Keys)
MAM>{
MAM> when( Card.ValencyDict[k] == v )
MAM> {
MAM> vv = k;
MAM> break;
MAM> }
MAM>
def vv = res: {
foreach (k in Card.ValencyDict.Keys)
when (Card.ValencyDict[k] == v)
res(v);
-1 // default value
};
Не. Ни один из вариантов не компилируется.
Вариант hardcase хорошо в плане читабельности. Но я про такую конструкцию еще не читал. Как называется этот механизм, не могу найти?
def vv = res : {
foreach(k in Card.ValencyDict.Keys)
when( Card.ValencyDict[k] == v )
res(k);
-1;
}
MAM>Не. Ни один из вариантов не компилируется.
Какой тип у Card.ValencyDict ?
MAM>Вариант hardcase хорошо в плане читабельности. Но я про такую конструкцию еще не читал. Как называется этот механизм, не могу найти?
Это именованные блоки.