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

为什么这段代码不是在ruby 1.9上编译,而是在ruby 1.8上?

发布时间:2020-12-16 19:05:23 所属栏目:百科 来源:网络整理
导读:抱歉标题,我不知道如何调用这种语法. 例如: ary = [ [11,[1]],[22,[2,2]],[33,[3,3,3]] ]# want to get [ [11,1],2],3] ] Ruby 1.8 ary.map{|x,(y,)| [x,y] }#= [[11,3]]ary.map{|x,(y)| [x,y] }#Syntax error,unexpected '|',expecting tCOLON2 or '[' or
抱歉标题,我不知道如何调用这种语法.

例如:

ary = [ [11,[1]],[22,[2,2]],[33,[3,3,3]] ]
# want to get [ [11,1],2],3] ]

Ruby 1.8

ary.map{|x,(y,)| [x,y] }
#=> [[11,3]]

ary.map{|x,(y)| [x,y] }
#Syntax error,unexpected '|',expecting tCOLON2 or '[' or '.'
#ary.map{|x,y] }
#                ^

Ruby 1.9

ary.map{|x,y] }
#SyntaxError: (irb):95: syntax error,unexpected ')'
#ary.map{|x,y] }
#                ^

ary.map{|x,3]]

※我不是要求获得想要的阵列的方法.

我想知道为什么这段代码工作是Ruby的版本之一,但不是两者兼而有之.

解决方法

虽然Ruby 1.9对于列表和类似列表的表示中的逗号比以前的版本更加宽松,但是有一些新的场合会引发语法错误.这似乎是一个. Ruby 1.9严格地将其视为方法定义,并且不允许使用该逗号.

您似乎也遇到了Ruby 1.8.7中已经纠正的边缘案例错误.列表扩展方法似乎不仅适用于一个项目.

在这种情况下的快速解决方案可能是:

ary.map{|x,_)| [x,y] }

在这种情况下,_作为任何变量起作用.

在这两个版本中你都应该得到:

[[11,3]]

(编辑:李大同)

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

    推荐文章
      热点阅读