我使用红宝石1.8.7和红宝石的轨道3.x。我有很多行这样Inplace enumeration
lines = lines.map {|e| e.strip}
lines = lines.map {|e| e.upcase}
lines = lines.map {|e| sanitize_element(e)}
而不是每次分配新值线有没有更好的方式来处理这个问题。我知道我可以做
lines = lines.map {|e| sanitize_element(e.strip.upcase) }
但这不是这个问题的主要观点。最主要的是要找到一种方法来处理上述情况,而不是每次都对行赋值。
基本上我正在寻找一个像这样优雅的解决方案,但我知道Enumerable中没有map!
。
lines.map! {|e| e.strip}
只要确保我不错过一个红宝石功能。
地图!未在http://www.ruby-doc.org/core/classes/Enumerable.html#M001491列出。让我试试看。 – 2011-03-10 19:13:12
是的,它实际上是在'Array'上。 http://www.ruby-doc.org/core/classes/Array.html#M000250;我认为这样做的原因是'Enumerable'只指定了不变的做事方式。 – 2011-03-10 19:14:33
很酷。非常感谢。 – 2011-03-10 19:18:34