繁体   English   中英

pharo smalltalk中的调用方法

[英]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消息发回旁边BinarioListadelistasBin

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM