pharo smalltalk中的调用方法
Calling methods in pharo smalltalk
我正在尝试从另一个 class (Binario) 调用一个函数,但它说它没有实现。
这是 Binario 中方法的代码 class:
genlista
^ (1 to: 30) collect: [ :i | 2 atRandom - 1 ]
这是另一个 class 方法的代码:
ListadelistasBin
| bin |
bin := Binario new.
^ (1 to: 30) collect: [ :i | bin genlista ]
请帮帮我:(
@Uko 很可能是对的,您在 Binario
的 class 端而不是实例端定义了方法。检查这个的一种方法是像这样修改你的第二种方法:
ListadelistasBin
| bin |
bin := Binario. "<- new removed"
^ (1 to: 30) collect: [:i | bin genlista]
如果现在你得到了答案,那么发生的事情是你的genlista
方法在错误的地方(class端而不是实例端)。
在 Smalltalk 中,每个方法都属于 class。但是,有两个"sides"一个class。 instance 端是放置 class 实例方法的地方。 class 端是放置 class 本身方法的地方。
如何判断 class 方法保存在哪一侧?只需寻找每个浏览器都必须 select 一侧或另一侧的开关。例如,在 Pharo 中,有一个切换按钮可用于 select 每一侧。
虽然实例方法定义了您的 class(和子classes)实例的行为,但 class 方法将被发送到 class .这只是 classes 是对象的结果。例如,Binario new
是发送到 class Binario
的消息,我们认为您的意图是为 Binario
的实例定义 genlista
方法。如果是这种情况,则复制该方法的源代码并将其粘贴到 class 的实例端。然后删除 class 方法并重试。啊!并且不要忘记将 new
消息放回到 ListadelistasBin
中的 Binario
旁边!
我正在尝试从另一个 class (Binario) 调用一个函数,但它说它没有实现。
这是 Binario 中方法的代码 class:
genlista
^ (1 to: 30) collect: [ :i | 2 atRandom - 1 ]
这是另一个 class 方法的代码:
ListadelistasBin
| bin |
bin := Binario new.
^ (1 to: 30) collect: [ :i | bin genlista ]
请帮帮我:(
@Uko 很可能是对的,您在 Binario
的 class 端而不是实例端定义了方法。检查这个的一种方法是像这样修改你的第二种方法:
ListadelistasBin
| bin |
bin := Binario. "<- new removed"
^ (1 to: 30) collect: [:i | bin genlista]
如果现在你得到了答案,那么发生的事情是你的genlista
方法在错误的地方(class端而不是实例端)。
在 Smalltalk 中,每个方法都属于 class。但是,有两个"sides"一个class。 instance 端是放置 class 实例方法的地方。 class 端是放置 class 本身方法的地方。
如何判断 class 方法保存在哪一侧?只需寻找每个浏览器都必须 select 一侧或另一侧的开关。例如,在 Pharo 中,有一个切换按钮可用于 select 每一侧。
虽然实例方法定义了您的 class(和子classes)实例的行为,但 class 方法将被发送到 class .这只是 classes 是对象的结果。例如,Binario new
是发送到 class Binario
的消息,我们认为您的意图是为 Binario
的实例定义 genlista
方法。如果是这种情况,则复制该方法的源代码并将其粘贴到 class 的实例端。然后删除 class 方法并重试。啊!并且不要忘记将 new
消息放回到 ListadelistasBin
中的 Binario
旁边!