加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby 2.0如何通过坐标访问矩阵中的元素?

发布时间:2020-12-17 03:47:41 所属栏目:百科 来源:网络整理
导读:我是ruby的新手,但这就是问题所在.假设我有一个矩阵,我需要在1,2修改一个元素 mm = Matrix.build(2,4) {0}mm[1][2] = 404 但这会引起错误信息 ArgumentError: wrong number of arguments (1 for 2)from /Users/xxxxxx/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.
我是ruby的新手,但这就是问题所在.假设我有一个矩阵,我需要在1,2修改一个元素

mm = Matrix.build(2,4) {0}
mm[1][2] = 404

但这会引起错误信息

ArgumentError: wrong number of arguments (1 for 2)
from /Users/xxxxxx/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/matrix.rb:314:in `[]'
from (irb):11
from /Users/xxxxxx/.rvm/rubies/ruby-2.0.0-p0/bin/irb:16:in `<main>'

我检查了ruby doc,但没有找到任何答案,抱歉问这么愚蠢的问题……

解决方法

获取元素:

mm[1,2] #output 0

设置元素:

没有方法可以做到这一点. Matrix是不可变对象,无法更改(即恕我直言,不是那么优化).您可以将每个矩阵复制到一个数组,更改元素,然后转换回来,或使用猴子补丁

class Matrix
  def []=(i,j,x)
    @rows[i][j] = x
  end
end
mm[1,2] = 404

或者,如果你不想修补或想要有点hacky(虽然看起来不太好):

mm.send(:[]=,1,2,404)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读