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

为什么Ruby在做同样的事情时会有拉链和转置?

发布时间:2020-12-17 04:18:28 所属栏目:百科 来源:网络整理
导读:他们似乎做同样的事情. g = [{ a: "A" },{ b: "B" }]r = [{ x: "X" },{ y: "Y" }]g.zip(r) # = [[{:a="A"},{:x="X"}],[{:b="B"},{:y="Y"}]][g,r].transpose # = [[{:a="A"},{:y="Y"}]] 为什么有两种方法? 解决方法 #transpose 假设self是一个数组数组并转换
他们似乎做同样的事情.
g = [{ a: "A" },{ b: "B" }]
r = [{ x: "X" },{ y: "Y" }]

g.zip(r)        # => [[{:a=>"A"},{:x=>"X"}],[{:b=>"B"},{:y=>"Y"}]]
[g,r].transpose # => [[{:a=>"A"},{:y=>"Y"}]]

为什么有两种方法?

解决方法

#transpose假设self是一个数组数组并转换行和列.

#zip假设self可以是任何Enumerable对象.

这里有更多不同之处

a = [12,11,21]
b = [1,2]

[a,b].transpose # transpose': element size differs (2 should be 3) (IndexError)
a.zip(b) # => [[12,1],[11,2],[21,nil]]
b.zip(a) # => [[1,12],[2,11]]

应用#transpose方法a和b应该具有相同的大小.但是对于应用#zip,不需要b与a的大小相同,即b和a可以是任何大小.

使用#zip,结果数组大小将始终为self的大小.使用#transpose,生成的数组大小将是内部数组的self大小.

(编辑:李大同)

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

    推荐文章
      热点阅读