在Ruby中打印可读的Matrix

vpi*_*mph 10 ruby matrix

是否有内置的方式在Ruby中打印可读矩阵?

例如

require 'matrix'
m1 = Matrix[[1,2], [3,4]]
print m1
Run Code Online (Sandbox Code Playgroud)

并让它显示

=> 1 2
   3 4
Run Code Online (Sandbox Code Playgroud)

在REPL而不是:

=> Matrix[[1,2][3,4]]
Run Code Online (Sandbox Code Playgroud)

用于矩阵的Ruby Docs 使它看起来应该显示的内容,但这不是我所看到的.我知道写一个函数来做这件事是微不足道的,但如果有一个'正确'的方式,我宁愿学习!

sep*_*eph 11

您可以将其转换为数组:

m1.to_a.each {|r| puts r.inspect}

=> [1, 2]
   [3, 4]
Run Code Online (Sandbox Code Playgroud)

编辑:

这是一个"免费点"版本:

puts m1.to_a.map(&:inspect)
Run Code Online (Sandbox Code Playgroud)


sun*_*eja 6

我无法让它看起来像文档,所以我为您编写了一个函数来完成相同的任务。

require 'matrix'

m1 = Matrix[[1,2],[3,4],[5,6]]

class Matrix
  def to_readable
    i = 0
    self.each do |number|
      print number.to_s + " "
      i+= 1
      if i == self.column_size
        print "\n"
        i = 0
      end
    end
  end
end

m1.to_readable

=> 1 2 
   3 4 
   5 6 
Run Code Online (Sandbox Code Playgroud)