Ruby-to-u-ary方法混淆
我查找了Array类的to_ary方法。我不知道该方法如何与其源文档相关联 to_ary方法=>返回self 如果我这样做: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] 为什么属性静态值是必需的?价值是寻回者吗?参数之间的空格(而不是逗号)是否意味着第二个参数是接收
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。