瞎扯淡 《松本行弘的程序世界》中 matz 有段 Ruby 代码貌似写错了?

ibachue · 2013年06月12日 · 最后由 iBachue 回复于 2013年06月13日 · 2256 次阅读

最近开始读这本书了,看到第三章《程序块》中3.3.10 Lisp的内部包和块的区别中提到的这段代码

# (a)
col.select{|x| g(x) }.collect{|x| f(x)}
# (b)
col.select(&:g).collect(&:f)

文中提到 b 是 Ruby 1.9 的省略写法。 这里有两个问题,首先col.select(&:g).collect(&:f)对应的写法应该是col.select{|x| x.g}.collect{|x| x.f}吧,col.select{|x| g(x) }.collect{|x| f(x)}这句语句应该是不可省略了,之前我对此一直很不满呢,因为感觉出现这类代码其实频率还更高些,比如逐个输出的情况。其次这也不应该是 Ruby 1.9 的省略写法吧,1.8 也有啊。

@iBachue 1.87 的某个新版本更新了核心库,也开始支持了。

#1 楼 @lyfi2003 好吧 确实不有不少书中提及的 1.9 的功能我在 1.8 都用过。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号