Io における method と block の違い
一番大きいのは doc に書いてあるとおりスコープの違い (というか、ローカルオブジェクト (=変数オブジェクト) がどこからクローンされるか) だけれど、それだけじゃなくて、call が必要かどうかもあるみたいだ。
a := Object clone do (
aBlock := block("called block")
aMethod := method("called method")
)
a aBlock print
#=>
# # test.io:3
# method(
# "called block"
# )
a aBlock call print #=> called block
a aMethod print #=> called method
a getSlot("aMethod") print
#=>
# # test.io:4
# method(
# "called method"
# )block の場合は自動的に呼ばれない。