Je voudrais créer un itérateur que je peux passer à une méthode pour la méthode à appeler.Dans Ruby, pouvez-vous utiliser la méthode d'appel lambda ou ou Proc pour appeler un itérateur?
#!/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}:-(" }
Est-ce que lambda ou proc peuvent être des itérateurs dans Ruby? Je voudrais les passer à une classe en tant que paramètre.
'add_one = -> (num) {num + 1}; [10, 20, 30, 100] .map (& add_one) # => [11, 21, 31, 101] ' – Kris
Je cherchais l'itérateur pour donner comme les itérateurs devraient. –