Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby-to-u-ary方法混淆_Ruby_Methods - Fatal编程技术网

Ruby-to-u-ary方法混淆

Ruby-to-u-ary方法混淆,ruby,methods,Ruby,Methods,我查找了Array类的to_ary方法。我不知道该方法如何与其源文档相关联 to_ary方法=>返回self 如果我这样做: 1.9.3-p0 :013 > a = [1,33,42] => [1, 33, 42] 1.9.3-p0 :014 > a.to_ary => [1, 33, 42] 1.9.3-p0 :015 > a =>[1, 33, 42] 为什么属性静态值是必需的?价值是寻回者吗?参数之间的空格(而不是逗号)是否意味着第二个参数是接收

我查找了Array类的to_ary方法。我不知道该方法如何与其源文档相关联

to_ary方法=>返回self

如果我这样做:

1.9.3-p0 :013 > a = [1,33,42]
=> [1, 33, 42] 
1.9.3-p0 :014 > a.to_ary
=> [1, 33, 42] 
1.9.3-p0 :015 > a
=>[1, 33, 42] 
为什么属性静态值是必需的?价值是寻回者吗?参数之间的空格(而不是逗号)是否意味着第二个参数是接收方调用的方法

static VALUE

rb_ary_to_ary_m(VALUE ary) 
{
   return ary;
}
最好的


cj3kim这是C代码。Ruby解释器是用C语言编写的。在这段代码中,第一个参数用作
self
。ruby中的一个等价物是:

def to_ary
  return self
end

这里发生的事情是,它将其视为一个数组,IRB使用打印方法将其推送到屏幕上。Print会将
转换为_ary
转换为字符串,因此您不会看到任何差异,使用puts时会看到差异。将uses
置于后台,而print使用
置于后台


to_-ary
方法用于隐式转换,而
to_-a
方法用于显式转换。一个很好的例子是方法
展平
,它将多维数组展平为奇异的多维数组。除非您使用危险的方法,否则当您继续使用非串联的展平方法时,实际变量将保持不变。这是因为
flatten
使用
来存储
,而不是
来存储
,而
flatten使用
来_a
to_ary
将其视为该实例的数组,但不会永久更改变量。

静态值
声明函数返回一个
,但随着@LBg的运行,它全是C。