我想用一个方法来扩展String类,以创建一个字符串中的url slug。我在这里找到了一个链接,显示如何将扩展程序移动到自己的包中:扩展Pharo Smalltalk类行为的最佳途径?
Smalltalk Daily 07/13/10: Extending Behavior II。
但是,我在Pharo Smalltalk中找不到任何“移动到包”选项。用新方法扩展核心类还可以吗?还是有更好的方法?
我想用一个方法来扩展String类,以创建一个字符串中的url slug。我在这里找到了一个链接,显示如何将扩展程序移动到自己的包中:扩展Pharo Smalltalk类行为的最佳途径?
Smalltalk Daily 07/13/10: Extending Behavior II。
但是,我在Pharo Smalltalk中找不到任何“移动到包”选项。用新方法扩展核心类还可以吗?还是有更好的方法?
在菲罗或佳乐把扩展方法MyPackage的名为*mypackage
方法类别(或者,如果你想成为更具描述性*mypackage-slug
)。
在这些类别的方法自动地属于MyPackage的包(在从视蒙蒂塞洛点至少)
“它是确定只用新方法延伸的核心类,或者是有一个更好的方法?”
这个决定有权衡。事实上,Pharo曾将String >> asUrl直到最近,当时it was removed as part of cleaning the system。一方面,一些人认为这是不好的风格(参见肯特贝克的最佳实践),在没有类似协议的对象之间有转换方法(语义相似)。此外,这会导致膨胀的核心类(如字符串和对象)。但是,在您自己的应用程序中,可能有一个很好的理由来平衡这些因素,并且因为您将它与您的应用程序打包在一起,而不是与系统一起打包,所以可以摆脱困境。