Dec 06, 2012 18:15
Наткнулся на странности с method resolution в руби. Оказывается, публичные и приватные методы со знаком = в названии разрешаются по разному.
class Foo
def dafuq
puts name # => calling method `name`
name = "Katz" # => creating local variable `name`
puts self.name # => No method error
self.name = "Katz" # => calling method `name=`
end
def nice_and_predictable
location = "Omsk"
location
end
def location
@location
end
def location=(val)
@location = val
end
private
def name
@name
end
def name=(val)
@name = val
end
end