文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
2.3 用到 Self 的点对象
现在我们可以定义种种方法,或返回 self,或在方法体中使用 self:
(define (make-point init-x init-y)
(OBJECT
([field x init-x]
[field y init-y])
([method x? () x]
[method y? () y]
[method x! (new-x) (set! x new-x)]
[method y! (new-y) (set! y new-y)]
[method above (other-point)
(if (> (-> other-point y?) y)
other-point
self)]
[method move (dx dy)
(begin (-> self x! (+ dx (-> self x?)))
(-> self y! (+ dy (-> self y?)))
self)])))
(define p1 (make-point 5 5))
(define p2 (make-point 2 2))
> (-> (-> p1 above p2) x?)
5
> (-> (-> p1 move 1 1) x?)
6
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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