我发现自己对以下用 Ruby 编写的冗长代码感到恼火:
polys.each { |poly| poly.edges.each {|edge| draw edge.start, edge.end } }
(polys
是多边形数组,边是多边形返回边数组的方法)
理想情况下,我想将其缩短为以下内容:
polys.each.edges.each { draw _.start, _.end }
更具体地说,我想知道:
- 我们如何编写一个method_missing hack,就像第一个一样?(在使用缺少的方法调用时,枚举器可以对从枚举返回的每个项目调用此方法)
- 有没有办法摆脱
|x|
使用任何符号或默认名称?