2

最近、私はiolanguageを学び始めました。「メソッド」メッセージを試すとき、私は書きました:

Io> f := method(getSlot("f"))
==> method(
    getSlot("f")
)

Io> slotSummary
==>  Object_0x97f41a8:
  Lobby            = Object_0x97f41a8
  Protos           = Object_0x97f4090
  _                = nil
  exit             = method(...)
  f                = method(...)
  forward          = method(...)
  set_             = method(...)

Io> f
==> nil

しかし、なぜ f を呼び出すと"f"自体ではなくnilが返されるのでしょうか?

4

2 に答える 2

0

を試してみてくださいg := block(getSlot("g"))。期待どおりの動作をするはずです。残念ながら、なぜそうなのか説明できません。申し訳ありません。とポインタをさまざまな方法でblock設定methodするという事実に関係していると思います。selfproto

methodresp内で次のことを試すことができます。block結果を比較します。

call sender          #locals object of caller
call message         #message used to call this method/block
call activated       #the activated method/block
call slotContext     #context in which slot was found
call target          #current object
于 2014-02-09T10:38:45.120 に答える