如何将Ruby对象打印为字符串?

时间:2015-12-24 18:22:05

标签: arrays ruby object

我有一个类Board,其中包含我要打印为另一个类Cell的对象。我随机为每个单元格分配了'x''o'的值,我希望它能够打印'x''o'的二维数组。 这是我的代码:

class Cell
  attr_accessor :cell
  def initialize
    @cell = ['x', 'o'].sample
  end
end

class Board
  attr_reader :board
  attr_accessor :row
  def initialize
    @board = Array.new(9)
    @row = Array.new(9)
    @my_cell = ''
  end
  def create_row
    self.row.map! do |empty_space|
      empty_space == nil ? Cell.new : empty_space
    end
  end
  def create_board
    self.board.map! do |empty_space|
      empty_space == nil ? self.row : empty_space
    end
  end
  def to_s
    self.board
  end
end

new_board = Board.new
new_board.create_row
new_board.create_board
puts new_board.to_s

当我打印电路板时,它会给出一个单元对象坐标列表。我无法理解。

2 个答案:

答案 0 :(得分:2)

to_s应该返回String,这就是为什么它首先被称为to_s。您将从Array而不是to_s返回String

答案 1 :(得分:0)

尝试awesome_print。这很棒。它以非常易读的格式转储您的对象,例如:

jQuery.param()

您可以在github上找到它或将其添加到您的Gemfile

 :014 > ap Major.first
  Major Load (4.2ms)  SELECT  "majors".* FROM "majors"  ORDER BY     "majors"."id" ASC LIMIT 1
 #<Major:0x007f8677e77c50> {
         :id => 9,
       :name => "Art",
 :profile_id => 85676,
 :school_code => 123,
 :created_at => Fri, 11 Dec 2015 21:22:25 UTC +00:00,
 :updated_at => Fri, 11 Dec 2015 21:22:25 UTC +00:00
}