返回介绍

5 类

发布于 2025-02-20 00:17:08 字数 513 浏览 0 评论 0 收藏 0

回头讨论工厂函数(参见 构造对象 ):

(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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文