在 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_privateand bar_public_2,那么不要使用private,private :bar_private在定义之后使用bar_private。