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

Ruby Matrix set_element是私有的吗?

发布时间:2020-12-17 03:27:42 所属栏目:百科 来源:网络整理
导读:在Matrix类的实例上调用set_element时,我收到以下错误 NoMethodError: private method ‘set_element’ called for Matrix[[0,0],[0,0]]:Matrix 但是set_element列在文档中的公共实例方法下 Matrix#set_element 另外,set_element是[]=(i,j,v)的别名,使用此方
在Matrix类的实例上调用set_element时,我收到以下错误

NoMethodError: private method ‘set_element’ called for Matrix[[0,0],[0,0]]:Matrix

但是set_element列在文档中的公共实例方法下

Matrix#set_element

另外,set_element是[]=(i,j,v)的别名,使用此方法我收到以下错误

ArgumentError: wrong number of arguments (3 for 2)

没有任何意义,任何帮助表示赞赏.

Ruby 1.9.2 p180

解决方法

文档不正确.如果你看一下1.9.1中的matrix.rb文件,你会看到:

def []=(i,v)
  @rows[i][j] = v
end
alias set_element []=
alias set_component []=
private :[]=,:set_element,:set_component

所以这三种方法都存在,但它们被明确地设置为私有.

一些快速的实验表明,文档中的许多方法实际上都是私有的.手册页顶部有一大块文档,列出了显然应该是可用方法的内容;该列表与rdoc生成的列表不匹配,因此存在一些混淆.

我得到的印象是Matrix的实例就像Fixnum和Number一样是不可变的.

(编辑:李大同)

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

    推荐文章
      热点阅读