Как найти цепочку сообщений MessageNotUnderstood

Следуя моему предыдущему примеру здесь

Как найти, какой было ли неправильное сообщение в сообщении «Сообщение не понято»?

Допустим, код сейчас такой

Transcript explode implode andBecomeNuclear.

В этом случае Pharo пошлет 3 MNU: 1) взорвется 2) взорвется 3) и станет ядерным

Переопределение DoesNotUnderstand: здесь не помогает, потому что мне нужна полная цепочка сообщений. Это означает, что я хочу, чтобы он давал мне не одно сообщение, а все 3 сообщения вместе, пока не найдет точку, которая заканчивает команду pharo.

Как я это делаю?


person Kilon    schedule 20.07.2014    source источник


Ответы (1)


Во-первых, Pharo не будет отправлять 3 сообщения. Следуя порядку приоритета, он отправит explode, а затем остановится с DNU или отправит implode возвращаемому объекту. Что вы можете сделать, так это определить DNU таким образом, чтобы сообщения сохранялись в очереди и возвращались самостоятельно. Я не знаю, как получить всю цепочку в конце инструкции. Самый простой способ — определить какое-нибудь сообщение, например chain, которое вернет всю очередь.

person Uko    schedule 20.07.2014
comment
спасибо, Уко, да, я думал сделать то же самое, но я понятия не имею, как определить, когда заканчивается оператор pharo. Тем не менее голосование от меня :) - person Kilon; 20.07.2014
comment
Вы не можете обнаружить '.' если ты это имеешь в виду. Обычно в конце у нас есть специальное сообщение, которое действительно реализовано в классе. Например, #отправить - person Damien Cassou; 24.07.2014