我想创建一个过滤器,并能够将其应用于数组或散列.例如:
def isodd(i)
i % 2 == 1
end
Run Code Online (Sandbox Code Playgroud)
我希望能够像这样使用它:
x = [1,2,3,4]
puts x.select(isodd)
x.delete_if(isodd)
puts x
Run Code Online (Sandbox Code Playgroud)
这似乎应该是直截了当的,但我无法弄清楚我需要做什么才能让它发挥作用.
Dav*_*Ray 73
创建一个lambda,然后使用&
运算符转换为块:
isodd = lambda { |i| i % 2 == 1 }
[1,2,3,4].select(&isodd)
Run Code Online (Sandbox Code Playgroud)
Ant*_*nen 31
puts x.select(&method(:isodd))
Run Code Online (Sandbox Code Playgroud)
Dan*_*uis 20
您可以创建一个named Proc
并将其传递给采用块的方法:
isodd = Proc.new { |i| i % 2 == 1 }
x = [1,2,3,4]
x.select(&isodd) # returns [1,3]
Run Code Online (Sandbox Code Playgroud)
该&
运营商之间进行转换Proc
/ lambda
和块,这是方法像什么select
期望.
归档时间: |
|
查看次数: |
23542 次 |
最近记录: |