gpt4 book ai didi

ruby - 在 Ruby 中替换 Vector 的值

转载 作者:数据小太阳 更新时间:2023-10-29 08:45:23 24 4
gpt4 key购买 nike

我有一个矩阵,我想用另一个值替换列(或行)的值。

我试过这个:

m = Matrix.empty(5, 0)
n = Matrix.empty(0, 5)
g = m *n

puts g.column(3).map! { 3 }

但是 map! 不适用于 Vector,并且 map 不会更改 Matrix 中列的值。那么我该怎么做呢?

最佳答案

g.column(3).class
=> Vector
Vector.instance_methods.grep(/map/)
=> [:map, :map2, :flat_map]

Vector 没有 map! 方法。

 g[0, 0] =3
NoMethodError: private method `[]=' called for #<Matrix:0x007f8cd8951d18>

[]=是私有(private)方法,可以使用send方法绕过私有(private):

 g.send(:[]=, 0, 0, 3)
=> 3


g = Matrix[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

5.times do |i|
g.send(:[]=,i, 3, 3)
end

g
=> Matrix[[0, 0, 0, 3, 0], [0, 0, 0, 3, 0], [0, 0, 0, 3, 0], [0, 0, 0, 3, 0], [0, 0, 0, 3, 0]]

irb(main):580:0> 5.times do |i|
irb(main):581:1* g.send(:[]=, 0, i, 3)
irb(main):582:1> end
=> 5
irb(main):583:0> g
=> Matrix[[3, 3, 3, 3, 3], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

关于ruby - 在 Ruby 中替换 Vector 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30169449/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com