我有下面的代码红宝石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修复。
不是如果unnessary? DEF名称(SET_VALUE) @name = SET_VALUE除非set_value.nil? 结束 – CodeJoust 2009-10-27 17:14:35
我解释这个问题的方式,是指海报一直在寻找一种方式来获得,并用同样的方法设置。如果是必要的,但条件并不完美。因为它不会让nil或false分配给@name。 – EmFi 2009-10-27 17:19:37