首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby to_ary方法混淆

Ruby to_ary方法混淆
EN

Stack Overflow用户
提问于 2012-05-06 07:01:47
回答 2查看 693关注 0票数 1

我查找了Array类的to_ary方法。我搞不懂这个方法与它的源文档之间的关系。

to_ary方法=>返回self

如果我这样做:

代码语言:javascript
复制
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] 

为什么属性静态值是必需的?价值是寻回犬吗?参数之间的空格(而不是逗号)是否意味着第二个参数是接收方调用的方法?

代码语言:javascript
复制
static VALUE

rb_ary_to_ary_m(VALUE ary) 
{
   return ary;
}

最好的

cj3kim

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-06 07:08:55

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

代码语言:javascript
复制
def to_ary
  return self
end
票数 2
EN

Stack Overflow用户

发布于 2015-11-22 00:28:40

这里发生的情况是,它将其视为一个数组,IRB使用print方法将其推送到屏幕上。Print会将to_ary转换为字符串,因此您不会看到任何差异,当您使用puts时,您会看到差异。Puts在后台使用to_ary,而print在后台使用to_s

to_ary方法用于隐式转换,而to_a方法用于显式转换。flatten方法就是一个很好的例子,它采用多维数组并将其展平为单维数组。除非您使用before方法,否则当您继续使用flatten方法的串联外时,实际变量将保持不变。这是因为flatten使用to_ary而不是to_a,而flatten!使用to_ato_ary将其视为该实例的数组,但不永久更改变量。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10466675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档