【问题标题】:Best way to extend Pharo Smalltalk class behavior?扩展 Pharo Smalltalk 类行为的最佳方法?
【发布时间】:2011-02-02 01:18:46
【问题描述】:

我想用一种方法来扩展 String 类,以从字符串中创建一个 url slug。我在这里找到了一个链接,显示了如何将扩展移动到他们自己的包中:

Smalltalk Daily 07/13/10: Extending Behavior II.

但是,我在 Pharo Smalltalk 中找不到任何“移动到打包”选项。只用新方法扩展核心类可以吗,还是有更好的方法?

【问题讨论】:

    标签: smalltalk pharo


    【解决方案1】:

    在 Pharo 或 Squeak 中,将 MyPackage 的扩展方法放在一个名为 *mypackage 的方法类别中(或者如果您想要更具描述性的 *mypackage-slug)。

    这些类别中的方法自动属于 MyPackage 包(至少从蒙蒂塞洛的角度来看)

    【讨论】:

      【解决方案2】:

      “只用新方法扩展核心类就可以了,还是有更好的方法?”

      这个决定需要权衡取舍。事实上,直到最近,Pharo 才有 String>>asUrl,当时是 it was removed as part of cleaning the system。一方面,某些人(参见 Kent Beck 的最佳实践)认为在不具有相似协议(语义相似)的对象之间具有转换方法是不好的风格。此外,这会导致膨胀的核心类(如 String 和 Object)。但是,在您自己的应用程序中,可能有充分的理由来平衡这些因素,并且由于您将其与您的应用程序一起打包,而不是与系统一起打包,所以请大胆尝试。

      【讨论】:

        【解决方案3】:

        在pharo 7中,*是禁止的。

        一条消息告诉您必须勾选方法编辑窗格中的扩展复选框。

        如果你这样做,你可以选择你的包裹。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-08
          • 1970-01-01
          • 2016-04-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多