[英]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.