簡體   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