首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解参数对.flatten方法的影响

理解参数对.flatten方法的影响
EN

Stack Overflow用户
提问于 2014-01-29 12:30:21
回答 1查看 213关注 0票数 0

ruby文档很好地解释了.flatten在没有争论的情况下所做的事情。但是我无法理解当一个1被传递到扁平的时候发生了什么

flatten(level) → new_ary

返回一个新数组,该数组是一个一维的自我平坦(递归).That,对于每个作为数组的元素,将其元素提取到新的array.The可选级别参数中,确定递归到平坦的级别。

代码语言:javascript
复制
s = [ 1, 2, 3 ]           #=> [1, 2, 3]
t = [ 4, 5, 6, [7, 8] ]   #=> [4, 5, 6, [7, 8]]
a = [ s, t, 9, 10 ]       #=> [[1, 2, 3], [4, 5, 6, [7, 8]], 9, 10]
a.flatten                 #=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a = [ 1, 2, [3, [4, 5] ] ]
a.flatten(1)              #=> [1, 2, 3, [4, 5]]

所谓“递归”,是否意味着参数直接影响“.flatten”将多维数组转换为常规奇异数组所执行的操作数?超级灌木丛能理解的条款将在这里非常感激。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2014-01-29 13:29:06

@Sergio Tulentsev在他的回答中提到的是正确的。但我还想补充一件事-

如果不提供任何参数,那么平坦的将在所有嵌套级别递归发生。那就是a.flatten会给[1, 2, 3, 4, 5]

不要认为a.flattena.flatten(0)是一样的。不,他们的工作方式不同。如果将嵌套的级别号作为012传递,那么就会按照方法的要求进行扁平化。但是,如果您不传递任何参数,该方法就会正常工作,就像它设计的那样,即它将创建一个单一级别的数组,它也会破坏所有更深层次的嵌套数组。

代码语言:javascript
复制
a = [ 1, 2, [3, [4, [5,[6]]] ] ]
# see no nested level is here, all are flattened.
a.flatten # => [1, 2, 3, 4, 5, 6] 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21431190

复制
相关文章

相似问题

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