SORU
6 EYLÜL 2009, Pazar


Ruby blok ve blok arasındaki fark

Neden bazen blok ve diğer zamanlarda kullan &içindeki fonksiyonları engellemek gerekir engelleyen kabul ediyor musunuz?

CEVAP
6 EYLÜL 2009, Pazar


block sadece yerel bir değişken, &block blok için bir başvuru yöntemi geçirilir.

def foo(block = nil)
  p block
end

foo # => nil
foo("test") # => test
foo { puts "this block will not be called" } # => nil

def foo(&block)
  p block
end

foo # => nil
foo("test") # => ArgumentError: wrong number of arguments (1 for 0)
foo { puts "This block won't get called, but you'll se it referenced as a proc." }
# => #<Proc:0x0000000100124ea8@untitled:20>

Ayrıca kullandığınız gibi yordamlara kullanabilmek için yöntem yöntem için bir blok olarak bir proc geçirmeye çağırırken &block kullanabilirsiniz.

my_proc = proc {|i| i.upcase }

p ["foo", "bar", "baz"].map(&my_proc)
# => ["FOO", "BAR", "BAZ"]

p ["foo", "bar", "baz"].map(my_proc)
# => ArgumentError: wrong number of arguments (1 for 0)

Değişken adı block özel bir şey ifade etmiyor. Eğer istersen &strawberries kullanabilirsiniz, ve işareti anahtarı burada.

this article yararlı olabilir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BradleyWuzHere

    BradleyWuzHe

    25 NİSAN 2011
  • HBO

    HBO

    17 Mayıs 2006
  • TheFlashCentre

    TheFlashCent

    22 Mayıs 2008