在ruby中,以下表达式:x.filter {|n| n.even?}
也可以写为:x.filter(&:even?)
因此,我想知道如何编写该表达式?x.filter {|n| !n.even?}
不使用odd?
方法
正如Sam和Engineerskmnky在以下问题的评论中所说,不可能x.filter { |n| !n.even? }
直接执行操作(实际上是在该块内执行两次操作)。
我想这只是一个简单的示例,而不是真实的代码,因此,如果您拥有的方法没有反向的方法,并且您不想创建一个方法,则可以按以下方式创建lambda或proc:
not_even = -> (n) { !n.even? }
然后在过滤器上将其称为:
x.filter(¬_even)
您也可以使用reject
应该给您相同结果的方法,而无需使用lambda。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句