shi*_*ime 8 ruby language-design private
以示例类为例:
# in ./example.rb
class Example
private
attr_accessor :name
end
Run Code Online (Sandbox Code Playgroud)
当我以详细模式运行它时,Ruby会向我发出警告:
$ ruby -W2 ./example.rb
example.rb:3: warning: private attribute?
Run Code Online (Sandbox Code Playgroud)
为什么不推荐这个?
因为在大多数情况下定义从外部不可见的 getter/setter 没有多大意义。我们通常attr_accessor仅用于在类外部公开实例变量。然而,该private关键字使生成的 getter/setter 方法对外界不可见,从而破坏了这一目的。
您想要使用私有 setter/getter 的唯一原因是涉及一些额外的逻辑。然而,在这种情况下,无论如何,您都必须使用 手动定义这些方法def。
| 归档时间: |
|
| 查看次数: |
1106 次 |
| 最近记录: |