Yapmaya çalıştığım şey:Ruby - Bir bloğu başka bir işleve gerçek bir blok olarak bir param olarak geçirebilir miyim?
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}" }
"instance.instance_eval {block.call}" yazdığı satırda, yeni örnek değişkenini çalıştırmak için başka bir yol bulmaya çalışıyorum blokta örnek değerlendirmesi. Bunu yapabilmek için düşünebilmemin tek yolu, bir değişken ya da herhangi bir şey olarak değil, test örneğinde olduğu gibi gerçek bir blok olarak orjinal bloğu örneklemek için.
Herhangi bir ipucu?
Ne ??? Bu kadar basit miydi? Hahaha teşekkürler! Bu günlerde takıldım! :) –
aranacak terimi 'blok parametreleri' idi; arka planda daha kolay olsa :) – Gishu