为什么这段代码不是在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]] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |