大佬教程收集整理的这篇文章主要介绍了IRB – Ruby 1.9.x哈希语法:{if:true}不等于{:if => true},大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
1.9.3p374 :010 > {if: truE} 1.9.3p374 :011?>
使用旧的语法,工作得很好:
1.9.3p374 :011 > {:if => truE} => {:if=>truE}
所有启动语句的关键字都表现出相同的行为.例如. def,do,module,case
在中间和类中发生的其他保留字工作正常:否则,结束
我的问题是:这是预期的行为,错误还是限制?
您可以在irb之外的纯Ruby中看到一些类似的行为.例如:
puts({if: truE}) # no problem,behaves as expected in Ruby 1.9.3. puts {if: truE} # raises a syntax error in Ruby 1.9.3
要回答你的问题,它是“预期的行为,错误还是限制”,我会说你应该忽略irb并将它与普通Ruby进行比较,如果你这样做,它就可以了.这意味着它必须是一个irb bug.
但是有可能或值得解决吗? @coreyWARD在他的评论中提出了一个很好的观点,即在遇到if时,irb必须在大多数情况下延迟执行.你必须要进一步了解,但你可能无法明确地解释所有这样的情况.
我的建议:如果可以的话,完全避免这种结构,如果可以避免,不要使用保留字作为标签!
这是一个可以用普通Ruby(例如MRI)运行的文件.您应该在输出中看到{:if => truE}以确认它是否有效.
{if: truE} foo = {if: truE} # if MRI is working,should be able to execute this file without trouble. p foo
以上是大佬教程为你收集整理的IRB – Ruby 1.9.x哈希语法:{if:true}不等于{:if => true}全部内容,希望文章能够帮你解决IRB – Ruby 1.9.x哈希语法:{if:true}不等于{:if => true}所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。