У меня следующий кодрубин alias_method вопрос
class User
attr_accessor :name
end
u = User.new
u.name = 'john'
puts u.name #=> john
В приведенном выше случае все работает. Однако этот код не работает
class User
attr_accessor :name
end
u = User.new
u.name = 'john'
u.name('john')
Для того, чтобы исправить эту проблему, я решил использовать alias_method. Я знаю, что есть другие способы решения проблемы, но я специально смотрю, можно ли решить эту проблему с помощью alias_method. Пытаюсь выучить.
После код будет работать
class User
attr_accessor :name
alias_method :foo, :name=
end
u = User.new
u.foo('john')
puts u.name
Однако этот код не будет работать по понятным причинам.
class User
attr_accessor :name
alias_method :name, :name=
end
u = User.new
u.name('john')
puts u.name
Кто-нибудь знает, можно ли устранить эту проблему с помощью alias_method.
Разве нет, если нет? def name (set_value) @name = set_value, если set_value.nil? end – CodeJoust
То, как я интерпретировал этот вопрос, означает, что плакат искал способ получить и установить с помощью того же метода. Если это необходимо, но условие не является совершенным. Поскольку это не позволит нильскому или ложному присваивать @name. – EmFi