在 Ruby 类定义中,private 关键字在以下场景中的作用域是什么:
class Foo
def bar_public
puts "public"
end
private
def bar_private
puts "private"
end
def bar_public_2
puts "another public"
end
end
私人只对 bar_private 起作用吗?还是在 bar_public_2 上?
在 Ruby 类定义中,private 关键字在以下场景中的作用域是什么:
class Foo
def bar_public
puts "public"
end
private
def bar_private
puts "private"
end
def bar_public_2
puts "another public"
end
end
私人只对 bar_private 起作用吗?还是在 bar_public_2 上?
在您的情况下,两者bar_private
都是bar_public_2
私有的。
private
那是因为这两种方法都在关键字的“范围内” 。
> f = Foo.new
#<Foo:0xf1c770>
> Foo.new.bar_private
NoMethodError: private method 'bar_private' called for #<Foo:0xf1c770>
> Foo.new.bar_public_2
NoMethodError: private method 'bar_public_2' called for #<Foo:0xf1c770>
无论哪种方式,回答您问题的最佳方法是打开 IRB 并尝试一下;-)
如果你觉得这很奇怪private
同时影响bar_private
and bar_public_2
,那么不要使用private
,private :bar_private
在定义之后使用bar_private
。