既存の BlockClosure クラスのメソッドを作成しようとしています。これは私たちがクラスでボードに書いたメソッドですが、私が望んでいたとおりに動作していません。これはコードです:
BlockClosure extend[
times: count[
count = 0
ifTrue:
[^self value.]
ifFalse:
[self value. self times: count - 1.].
]
].
これをgstインタープリターに入力してテストしてみました:
st> x:= 5
5
st> y := [x-1] times: 4.
a BlockClosure
しかし、この場合、y を 1 に等しくしたいのです。y の値が「BlockClosure」になるのはなぜですか?
編集:正しい時間の方法。
BlockClosure extend[
times: count[
count = 0
ifFalse:
[self value. ^self times: count - 1.].
]
].