在命名空间中创建全局函数(并从全局命名空间调用它)之间的区别是什么:
并创建一个静态类方法,并从全局命名空间调用?:
是否有理由更喜欢一种方法而不是另一种方法?
1> DCrystal..:是否有理由更喜欢一种方法而不是另一种方法?
(下面假设你要求/引用静态类方法和命名空间中的函数之间的区别)
历史上(在命名空间到达之前),人们被迫使用具有静态函数的类来不污染全局命名空间.这是您可能更频繁地遇到此方法的原因之一.
如果您需要访问类的数据,或者您想要在后代类中覆盖它们(所谓的"灵活性和功能性"),您可能更喜欢使用静态方法.
当你想要的只是......呃,嗯......一个函数时,你可能更喜欢命名空间函数.想想一些util,functional或collections函数,比如compose/partial,retry,filter/map/some/every等.你可能不希望在子类中覆盖它,对吧?它既不需要访问某些静态类成员.
但是,(命名空间)函数存在一个特别恼人的问题,即类不会受到影响.它是自动加载的.简而言之,目前无法自动加载功能.这是你可能在实践中经常遇到静态方法(当它们不一定需要时)的类的另一个原因.