我正在尝试为现有的 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.].
]
].