文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
2.4 互相递归的方法
上一节已经表明,方法可以通过向 self 发送消息来使用其他方法。这个例子展示相互递归的方法。
请在 Java 中尝试相同的定义,然后比较“大”数字的结果。是啊,我们的简单对象系统确实从尾调用优化中受益了!
(define odd-even
(OBJECT ()
([method even (n)
(case n
[(0) #t]
[(1) #f]
[else (-> self odd (- n 1))])]
[method odd (n)
(case n
[(0) #f]
[(1) #t]
[else (-> self even (- n 1))])])))
> (-> odd-even odd 15)
#t
> (-> odd-even odd 14)
#f
> (-> odd-even even 14)
#t
我们现在的对象系统支持 self,包括返回 self、发送消息给 self。请注意,方法中使用的 self 是在对象创建时被绑定的:在方法被定义时,它们捕获对 self 的绑定,此后该绑定就被固定了。我们将在下面的章节中看到,如果想要支持委托,或者想要支持类,这就行不通了。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论