使用Ruby中的to_str用法输出一个属性

时间:2010-10-11 08:40:54

标签: ruby

假设我有一个具有许多属性的类,但一次只需要一个属性,即

   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

这样做的最佳方式是什么?

2 个答案:

答案 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>