文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
5 类
回头讨论工厂函数(参见 构造对象 ):
(define (make-point init-x)
(OBJECT
([field x init-x])
([method x? () x]
[method x! (new-x) (begin (set! x new-x) self)])))
(define p1 (make-point 0))
(define p2 (make-point 1))
所有点对象都拥有自己的方法,尽管它们是相同的。至少它们的签名和主体是一样的,对吧?它们 完全 一样吗?事实并非如此。在这个版本的对象系统中,唯一的区别是,方法中包含对象自身:就是说,在 p1
的方法中, self
指向 p1
,而在 p2
的方法中它指向 p2
。换句话说,方法,也就是函数,因所捕捉的词法环境而不同。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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