好的,就像这样:
receiver selectors
返回
#(#expression #expression: #mondrianLabel #accept: #name)
但是
receiver expression
抛出MessageNotUnderstood
。
任何想法如何解决这个问题以及为什么会造成这种情况?
答案 0 :(得分:4)
您可能正在将消息expression
发送到类而不是该类的实例。
如果评估receiver selectors
的结果为#(#expression #expression: #mondrianLabel #accept: #name)
,那么receiver
很可能是一个类。消息#selectors
在类Behavior
上实现,并返回类的实例方法的选择器。换句话说:类(或其任何子类)的实例理解列出的消息。
因此,如果您评估receiver expression
,那么您将收到消息不理解异常,因为消息#expression
是在作为值的类的实例上定义的您的receiver
变量。