[英]Calling methods in pharo smalltalk
我正在尝试从另一个类(Binario)调用一个函数,但是它说它没有实现。
这是Binario类中方法的代码:
genlista
^ (1 to: 30) collect: [ :i | 2 atRandom - 1 ]
这是另一个类方法的代码:
ListadelistasBin
| bin |
bin := Binario new.
^ (1 to: 30) collect: [ :i | bin genlista ]
请帮我 :(
@Uko很可能是正确的,您在Binario
的类侧而不是在实例侧定义了方法。 一种检查方法是修改您的第二种方法,如下所示:
ListadelistasBin
| bin |
bin := Binario. "<- new removed"
^ (1 to: 30) collect: [:i | bin genlista]
如果现在您得到了答案,那么发生的是您的genlista
方法放在错误的位置(类方而不是实例方)。
在Smalltalk中,每个方法都属于一个类。 但是,一个类有两个“方面”。 实例侧是放置类实例的方法的地方。 在类方面,您可以为类本身放置方法。
您如何知道在类的哪一侧保存了方法? 只需寻找每个浏览器都必须选择一侧或另一侧的开关即可。 例如,在Pharo中,有一个切换按钮可用于选择每侧。
实例方法定义了类(和子类)实例的行为,而类方法是要发送给类的。 这只是类是对象的结果。 例如, Binario new
被送到类的消息Binario
,我们相信,你的目的是为了定义genlista
的实例方法Binario
。 如果是这种情况,则复制该方法的源代码并将其粘贴到类的实例侧。 然后删除类方法,然后重试。 啊! 不要忘记把new
消息发回旁边Binario
在ListadelistasBin
!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.