def example
@lines.select {|line| ... }.map {|line| ... }.uniq.sort
end
在Ruby 1.9和1.8.7中,您也可以通过不向其传递块来链接和包装迭代器:
enum.select.map {|bla| ... }
但是在这种情况下实际上是不可能的,因为块的类型返回select
和的值map
不匹配。对于这样的事情更有意义:
enum.inject.with_index {|(acc, el), idx| ... }
AFAICS,您能做的最好的就是第一个例子。
这是一个小例子:
%w[a b 1 2 c d].map.select {|e| if /[0-9]/ =~ e then false else e.upcase end }
# => ["a", "b", "c", "d"]
%w[a b 1 2 c d].select.map {|e| if /[0-9]/ =~ e then false else e.upcase end }
# => ["A", "B", false, false, "C", "D"]
但是你真正想要的是["A", "B", "C", "D"]
。