在Ruby中,可以使用lambda 或Proc 调用方法来调用迭代器吗?
In Ruby, can you use the lambda or or Proc call method to invoke an iterator?
我想创建一个迭代器,我可以将其传递给要调用的方法。
#!/usr/bin/env ruby
puts "------------------------------------"
puts "1 This works."
puts "------------------------------------"
1.times {|who| puts "Position #{who} works!"}
puts "------------------------------------"
puts "2 This works."
puts "------------------------------------"
aBlock = Proc.new { |who| puts "Position #{who} also works!" }
2.times &aBlock
puts "------------------------------------"
puts "3 This works."
puts "------------------------------------"
def eachIndex
3.times { |i| yield i }
end
eachIndex &aBlock
puts "------------------------------------"
puts "4 This does not work."
puts "------------------------------------"
iterator = lambda { |name| yield name }
iterator.call(4) {|who| puts "Does not work #{who}:-("}
puts "------------------------------------"
puts "5 This does not work."
puts "------------------------------------"
iterator = lambda { |name,&block| yield name }
iterator.call(5) {|who| puts "Does not work #{who}:-("}
puts "------------------------------------"
puts "6 This does not work."
puts "------------------------------------"
iterator = Proc.new { |name,&block| yield name }
iterator.call(6) {|who| puts "Does not work #{who}:-(" }
lambda 或 proc 可以是 Ruby 中的迭代器吗?我想将它们作为参数传递给 class。
方法如下
iterator = -> (name, &block) { block.call name }
iterator.call(4) { |who| puts "It works now #{who} :)" }
P.S。请注意,我在这里为 lambda
、->
使用了一个名为 stabby lambda
的快捷方式
我想创建一个迭代器,我可以将其传递给要调用的方法。
#!/usr/bin/env ruby
puts "------------------------------------"
puts "1 This works."
puts "------------------------------------"
1.times {|who| puts "Position #{who} works!"}
puts "------------------------------------"
puts "2 This works."
puts "------------------------------------"
aBlock = Proc.new { |who| puts "Position #{who} also works!" }
2.times &aBlock
puts "------------------------------------"
puts "3 This works."
puts "------------------------------------"
def eachIndex
3.times { |i| yield i }
end
eachIndex &aBlock
puts "------------------------------------"
puts "4 This does not work."
puts "------------------------------------"
iterator = lambda { |name| yield name }
iterator.call(4) {|who| puts "Does not work #{who}:-("}
puts "------------------------------------"
puts "5 This does not work."
puts "------------------------------------"
iterator = lambda { |name,&block| yield name }
iterator.call(5) {|who| puts "Does not work #{who}:-("}
puts "------------------------------------"
puts "6 This does not work."
puts "------------------------------------"
iterator = Proc.new { |name,&block| yield name }
iterator.call(6) {|who| puts "Does not work #{who}:-(" }
lambda 或 proc 可以是 Ruby 中的迭代器吗?我想将它们作为参数传递给 class。
方法如下
iterator = -> (name, &block) { block.call name }
iterator.call(4) { |who| puts "It works now #{who} :)" }
P.S。请注意,我在这里为 lambda
、->
使用了一个名为 stabby lambda