0

类 Matrix 以 0 为底。我想使用以 1 为底的矩阵元素或矩阵中的一行,同时仍保留现有方法的功能。我怎样才能做到这一点?

4

2 回答 2

2

可能使用Matrix#eachEnumerator#with_index

require 'matrix'

m = Matrix[ [1,2], [3,4] ].each
m.with_index(1){|e,ind| puts "#{e} at #{ind}" }
# >> 1 at 1
# >> 2 at 2
# >> 3 at 3
# >> 4 at 4

您也可以使用Vectorclass 和执行此操作Matrix#row_vectors

require 'matrix'

m = Matrix[ [1,2], [3,4] ]
r_v = m.row_vectors().each
r_v.with_index(1){|e,r| p "#{e.to_a} at row #{r}"}
# >> "[1, 2] at row 1"
# >> "[3, 4] at row 2"
于 2013-09-22T15:36:52.000 回答
1

覆盖Matrix#[]

require "matrix"

class Matrix
  def [](i, j)
    @rows.fetch(i - 1){return nil}[j - 1]
  end
end

Matrix[[25, 93], [-1, 66]][1, 2] # => 93
于 2013-09-22T16:41:25.077 回答