使用常量而不是像这样返回这些常量的方法有什么意义吗?
class Foo
LETTERS = [:a, :b, :c]
# and them call it Foo::LETTERS
end
# or
class Foo
def self.letters
[:a, :b, :c]
# and then call it Foo.letters, more simplier
end
end
Run Code Online (Sandbox Code Playgroud)
我只能看到第一种方法的一个优点:尝试重新定义常量时发出警告,但我认为这种情况很少见。
每次Foo.letters调用该方法时,您的第二种方法都会创建一个新数组。当然,这可以通过保存值来解决:
class Foo
def self.letters
@letters ||= [:a, :b, :c]
end
end
Run Code Online (Sandbox Code Playgroud)
此外,使用每种方法继承这样的类时,行为也会发生一些变化(请参阅“如何在继承的类中使用重写的常量”)
就个人而言,我看不出Foo.letters比Foo::LETTERS- 一个额外的角色更简单?我认为常量应该用于常量,并且静态方法有自己的用例......
| 归档时间: |
|
| 查看次数: |
68 次 |
| 最近记录: |