Здравствуйте, PhantomIvan, Вы писали:
PI>вот так надо было, в конце концов, список это reference
Ага. Но сообщение об ошибке конечно не фантан. Я даже видел код его вызвающий... Надо бы все же запостить. А то я тут один раз тоже долго не мог понять что происходит хот всего лишь в переменной был null.
Отладчик, гад, тоже информацию показывает не очень корректно. В сумме получаются проблемы на ровном месте.
ЗЫ
Кстати, только что попробовал твой код и он все же выдал System.NullReferenceException(). Так что или баг поправлен, или он возникает в более сложном случае.
Не мог бы ты привести полный пример выдающий ошибку о "Матчинге"?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
VD>Отладчик, гад, тоже информацию показывает не очень корректно. В сумме получаются проблемы на ровном месте.
да, он во всем виновать!
теперь доверия к нему нет никакого почти
VD>Кстати, только что попробовал твой код и он все же выдал System.NullReferenceException(). Так что или баг поправлен, или он возникает в более сложном случае.
в более "сложном" случае, я ведь сначала добавлял пару элементов в список
и он, гад, по-тихому их добавлял к null-referenced списку (!!)
могу поклясться (не взорвется ), что он их таки добавлял
обратно привести код к исходному лень, но текущий выкладываю
VD>Не мог бы ты привести полный пример выдающий ошибку о "Матчинге"?
тута простой консоль-меню-ротатор, если кому понадобиться, буду тока рад
внимание! в коде ошибка "найди сам", которая и приводит к match exception
(что-то это фраза мне напоминает )
Здравствуйте, Denis K., Вы писали:
DK>Здравствуйте, PhantomIvan, Вы писали:
DK>Сразу скажу, что я только начинаю изучать Nemerle, однако в последнем билде такое работает:
a - some a
a - some a
Unhandled Exception: Nemerle.Core.MatchFailureException: Exception of type 'Nemerle.Core.MatchFailureException' was thrown.
at Nemerle.Collections.List.Iter['a](list`1 l, FunctionVoid`1 f)
at Nemerle.Core.list`1.Iter(FunctionVoid`1 f)
at Test.PrintMenus()
at _N_AutoModule.Main()
Здравствуйте, PhantomIvan, Вы писали:
VD>>Кстати, только что попробовал твой код и он все же выдал System.NullReferenceException(). Так что или баг поправлен, или он возникает в более сложном случае. PI>в более "сложном" случае, я ведь сначала добавлял пару элементов в список PI>и он, гад, по-тихому их добавлял к null-referenced списку (!!) PI>могу поклясться (не взорвется ), что он их таки добавлял PI>обратно привести код к исходному лень, но текущий выкладываю
А надо. Ведь если неясно как воспроизвести баг, то и исправить его не удатстя.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
DK> a - some a
DK> a - some a
DK>Unhandled Exception: Nemerle.Core.MatchFailureException: Exception of type 'Nemerle.Core.MatchFailureException' was thrown.
DK> at Nemerle.Collections.List.Iter['a](list`1 l, FunctionVoid`1 f)
DK> at Nemerle.Core.list`1.Iter(FunctionVoid`1 f)
DK> at Test.PrintMenus()
DK> at _N_AutoModule.Main()
DK>
Хм. Странно. У меня из СВН-а (свежак) выдает MatchFailureException уже на ::=. Но все равно спасибо, за короткий пример демонстриующий ошибку.
VD>А надо. Ведь если неясно как воспроизвести баг, то и исправить его не удатстя.
самый простой вариант
using System;
using System.Console;
module Program
{
Main() : void
{
def rotator = ConsoleMenuRotator();
rotator.Add('1', "asdf");
rotator.PrintMenus();
}
}
class ConsoleMenuRotator
{
mutable menus: list[char * string];// = [];
public Add(key: char, menu: string): void
{
menus ::= (key, menu);
//menus += [(key, menu)];
}
public PrintMenus(): void
{
menus.Iter((key, menu) => WriteLine($" $key - $menu"));
}
}
этот мегакод добавляет к списку, представляющему из себя null элементы!
реально добавляет, потому что PrintMenus отрабатывает, выводит на экран " 1 asdf", и потом уже ломается
match exception
наверно надо warning типа use of unitialized variable
да и в рантайме не позволять добавлять элементы непонятно куда