假设我有一个具有许多属性的类,但一次只需要一个属性,即
class A attr_accessor :name attr_accessor :other1 attr_accessor :other2 attr_accessor :other3 attr_accessor :other4 end
并且希望一次只输出一个属性:
a = A.new puts a.name.to_str
是:
name value of a: value_of_name
这样做的最佳方式是什么?
答案 0 :(得分:0)
在A类中创建一个to_s方法。这应该覆盖默认值。
e.g。
class A
def initialize
end
def to_s
puts "Name for a: #{name}"
end
end
答案 1 :(得分:0)
修改强>
您不会考虑在类中为您创建一个方法吗?
def as_string(sym)
"value of #{sym.to_s}: #{send(sym)}"
end
那么您可以使用a.as_string(:attributename)
来获得您想要的结果吗?否则你正在寻找一个属性作为一个对象,而attr_accessors
并不是真正的方法......
旧答案:
您需要覆盖类定义中的to_s
方法。请注意,puts
隐式调用此方法 - 当方法需要字符串时,它会自动尝试to_s
,因此您不需要。{/ p>