ruby Array.inspect 与 Array[element].to_s

标签 ruby linux arrays string

我正在使用一个数组,我们称之为 books,复杂对象的数组,我们称之为 Book。问题是当我调用 puts "#{books.inspect}" 时,ruby 输出二进制流(不可读的 utf8 字符)。但是,当我调用 puts #{books[0].to_str}" 时,我得到了一个简短、漂亮的输出,描述了有问题的 book。不确定它是否是相关,但是 Book 是一个子类(我们可以称它为父类 Item),并且 books.length=1

Ruby暗示 .to_s.inspect 是同义词,但它们在实践中显然提供了不同的结果。有谁知道为什么会这样,您能否就如何从整个图书收藏中获得我想要的漂亮输出提供建议?

杂项信息:

[chk ~ ]$ ruby -v
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux]

最佳答案

class Myclass
    def to_s
        'my string representation'
    end
    def inspect
        'my inspection'
    end
end
a= [Myclass.new]
p a
puts a

outputs ::
[my inspection]
my string representation

为数组中的每个元素调用 inspect 方法。如果未定义该方法,您将获得默认的类表示。您只需要定义 inspect

你总是可以这样做:

def inspect
  self.to_s
end

关于ruby Array.inspect 与 Array[element].to_s,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11567713/

相关文章:

Java - 通过数组存储的碰撞检测碰撞

ruby-on-rails - 如何在 Ruby 中检查默认单选按钮?

c++ - GLIBC_2.18 未找到,但在本地构建中

javascript - 如何在javascript中对数组的数组求和

java - 用值填充固定数组

Linux Ubuntu Tomcat Best Config 避免内存不足

ruby - Ruby 中具有负值的整数除法

ruby-on-rails - 访问 Garb Gem 结果

ruby-on-rails - Rails Ancestry gem : how to write scope to match all parents

linux - 在宏 + linux 系统调用 (nasm) 中定义标签