SORU
3 AĞUSTOS 2008, Pazar


Lambda kullanmak, Proc kullanma zamanı.yeni?

Ruby 1.8, bir yandan proc/lambda arasında ince farklar var, ve diğer tarafta Proc.new.

  • Nedir bu farklılıklar?
  • Seçmek için hangi bir karar vermek için nasıl kurallar verebilir misiniz?
  • Ruby 1.9, proc ve lambda farklıdır. Anlaşma nedir?

CEVAP
3 AĞUSTOS 2008, Pazar


Önemli ama ince bir fark yordamlara lambda ve yordamlara Proc.new ile oluşturulan oluşturulan return deyimi tanıtıcı şekildedir:

  • lambdaoluşturulan bir proc, return deyimi proc yalnızca kendisi verir
  • Sadece proc kontrol verir. Proc.newoluşturulan bir proc, return deyimi biraz daha şaşırtıcı: ^strong>ama aynı zamanda bu yöntem proc kapsayan!

Burada lambda-yarattığı proc return eylem içinde. Muhtemelen beklediğiniz şekilde davranır:

def whowouldwin

mylambda = lambda {return "Freddy"}
mylambda.call

# mylambda gets called and returns "Freddy", and execution
# continues on the next line

return "Jason"

end


whowouldwin
=> "Jason"

Şimdi burada Proc.newoluşturulan bir proc return aynı şeyi yapıyor. Yakut Azından Sürpriz çok övülen İlkesine keser bu durumlardan biri göreceksiniz:

def whowouldwin2

myproc = Proc.new {return "Freddy"}
myproc.call

# myproc gets called and returns "Freddy",
# but also returns control from whowhouldwin2!
# The line below *never* gets executed.

return "Jason"

end


whowouldwin2
=> "Freddy"

Bu şaşırtıcı davranış (veya daha az) yazma sayesinde, yordamlara yaparken Proc.new lambda kullanarak iyilik eğilimindedir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DudeFromUkraine

    DudeFromUkra

    7 Ocak 2008
  • Excel Functions

    Excel Functi

    4 NİSAN 2010
  • Matt Davis

    Matt Davis

    4 ŞUBAT 2006