Class Matrix是基数0.我想使用base 1引用矩阵元素或矩阵中的行,同时仍然保留现有方法的功能。我怎样才能做到这一点?
答案 0 :(得分:3)
可以使用Matrix#each
和Enumerator#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
您也可以使用Vector
课程和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"
答案 1 :(得分: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