C'est ce que je suis en train de faire:Ruby - Possibilité de passer un bloc en tant que param comme bloc réel à une autre fonction?
def call_block(in_class = "String", &block)
instance = eval("#{in_class}.new")
puts "instance class: #{instance.class}"
instance.instance_eval{ block.call }
end
# --- TEST EXAMPLE ---
# This outputs "class: String" every time
"sdlkfj".instance_eval { puts "class: #{self.class}" }
# This will only output "class: Object" every time
# I'm trying to get this to output "class: String" though
call_block("String") { puts "class: #{self.class}" }
Sur la ligne où il est dit « instance.instance_eval {} block.call », je suis en train de trouver une autre façon de faire de la nouvelle variable d'instance Exécutez l'instance eval sur le bloc. La seule façon que je puisse penser pour le faire est de passer à instance_eval le bloc d'origine, pas comme une variable ou n'importe quoi, mais comme un vrai bloc comme dans l'exemple de test.
Des conseils?
Quoi ??? C'était aussi simple? Hahaha Merci! J'ai été coincé sur celui-ci pendant des jours! :) –
le terme à rechercher était 'paramètres de bloc'; plus facile en rétrospective si :) – Gishu