为什么6.times.map在ruby 1.8.7中工作,而不是1.8.6
发布时间:2020-12-17 04:39:25 所属栏目:百科 来源:网络整理
导读:以下代码片段在Mac OS X上的1.8.7中工作正常,但在Ubuntu上的1.8.6中没有.为什么?有解决方法吗? 适用于1.8.7: $ruby --versionruby 1.8.7 (2009-06-08 patchlevel 173) [universal-darwin10.0]ltredgate15:eegl leem$irb 6.times.map {'foo'}= ["foo","foo
以下代码片段在Mac OS X上的1.8.7中工作正常,但在Ubuntu上的1.8.6中没有.为什么?有解决方法吗?
适用于1.8.7: $ruby --version ruby 1.8.7 (2009-06-08 patchlevel 173) [universal-darwin10.0] ltredgate15:eegl leem$irb >> 6.times.map {'foo'} => ["foo","foo","foo"] >> 但不是1.8.6: # ruby --version ruby 1.8.6 (2008-08-11 patchlevel 287) [i686-linux] Ruby Enterprise Edition 20090610 # irb irb(main):001:0> 6.times.map {'foo'} LocalJumpError: no block given from (irb):1:in `times' from (irb):1 irb(main):002:0> 为什么会有区别? 1.8.6的解决方法是什么? 解决方法
在1.8.7迭代器方法中,如果在没有块的情况下调用枚举器,则返回枚举器.在1.8.6你必须这样做
require 'enumerator' 6.enum_for(:times).map {...} 或者对于这个特定的用例,你可以简单地做(0 … 6).map {…} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |