【发布时间】:2011-01-31 22:13:21
【问题描述】:
类
class A
private
def foo
puts :foo
end
public
def bar
puts :bar
end
private
def zim
puts :zim
end
protected
def dib
puts :dib
end
end
A 的实例
a = A.new
测试
a.foo rescue puts :fail
a.bar rescue puts :fail
a.zim rescue puts :fail
a.dib rescue puts :fail
a.gaz rescue puts :fail
测试输出
fail
bar
fail
fail
fail
.发送测试
[:foo, :bar, :zim, :dib, :gaz].each { |m| a.send(m) rescue puts :fail }
.发送输出
foo
bar
zim
dib
fail
问题
标有“测试输出”的部分是预期结果。那么为什么我可以通过简单的Object#send 访问私有/受保护的方法呢?
也许更重要:
Ruby 中的public/private/protected 有什么区别?什么时候使用每个?有人可以提供private 和protected 用法的真实示例吗?
【问题讨论】:
-
因为红宝石给你绳子:)
标签: ruby language-design access-specifier