Không có cách nào để tạo điều này cho Ruby. Tuy nhiên, tôi đã tạo ra một Mô-đun có thể được đưa vào Ma trận bao gồm một phương pháp readable
. Bạn có thể tìm thấy mã này here, nhưng nó cũng nằm trong khối mã sau đây.
require 'matrix'
module ReadableArrays
def readable(factor: 1, method: :rjust)
repr = to_a.map { |row|
row.map(&:inspect)
}
column_widths = repr.transpose.map { |col|
col.map(&:size).max + factor
}
res = ""
repr.each { |row|
row.each_with_index { |el, j|
res += el.send method, column_widths[j]
}
res += "\n"
}
res.chomp
end
end
## example usage ##
class Matrix
include ReadableArrays
end
class Array
include ReadableArrays
end
arr = [[1, 20, 3], [20, 3, 19], [-32, 3, 5]]
mat = Matrix[*arr]
p arr
#=> [[1, 20, 3], [20, 3, 19], [-2, 3, 5]]
p mat
#=> Matrix[[1, 20, 3], [20, 3, 19], [-2, 3, 5]]
puts arr.readable
#=>
# 1 20 3
# 20 3 19
# -32 3 5
puts mat.readable
#=>
# 1 20 3
# 20 3 19
# -32 3 5
puts mat.readable(method: :ljust)
#=>
# 1 20 3
# 20 3 19
# -32 3 5
puts mat.readable(method: :center)
#=>
# 1 20 3
# 20 3 19
# -32 3 5
Nguồn
2018-01-20 22:31:40
Tôi chắc chắn sẽ xem SciRuby/NMatrix. Tôi là người mới đối với Ruby nên tôi hy vọng sẽ sử dụng nó cho một dự án tốt nghiệp để học thêm một chút nữa. Thực tế là ma trận chuẩn trong Ruby là bất biến khiến tôi trở về mặc định trở lại C#. Không biết nếu libs bên thứ 3 sẽ bay với giáo sư của tôi và đã được trên một cuộc khủng hoảng. Ngoài ra - Chúng tôi đã tốt nghiệp cùng năm tại VT, rất tuyệt khi thấy bạn đang ở UT. Tôi là Toán/CS và có thể quan tâm đến việc cho vay đối với dự án của bạn, tôi sẽ gửi cho bạn một tin nhắn. – vpiTriumph