Sobes.tech
Middle

Ruby'de lambda ve prosedür nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Ruby'de lambda ve prosedür, kod bloklarını kapsülleyen Proc nesneleridir.

Ana farklar, değerleri döndürme davranışları ve kabul edilen argüman sayısı ile ilgilidir:

  • Lambda:

    • Argüman sayısını katı kurallarla kontrol eder (normal bir metod gibi).
    • Lambda içindeki return, sadece kendisinden değer döner.
    # Lambda örneği
    lambda_proc = lambda { |a, b| return a + b }
    puts lambda_proc.call(1, 2) # 3
    
    # Hata: yanlış argüman sayısı
    # lambda_proc.call(1)
    
  • Proc:

    • Argüman sayısına daha az katı (daha fazla veya daha az argüman olsa bile hata vermeyebilir).
    • Proc içindeki return, tanımlandığı kontekstten değer döner (bir blok içindeki return gibi).
    # Proc örneği
    proc_proc = Proc.new { |a, b| return a + b }
    
    def method_with_proc
      proc_proc = Proc.new { return "Yöntemden dönüş" }
      proc_proc.call
      "Bu metin gösterilmeyecek"
    end
    
    puts method_with_proc # Yöntemden dönüş
    
    # Yanlış argüman sayısında hata vermez (davranış tahmin edilemez olabilir)
    # proc_proc.call(1)
    

Karşılaştırma:

Özellik Lambda Proc
Argüman kontrolü Katı Esnek
return davranışı Lambda'dan döner Konteksten döner
Sınıf Proc (ama lambda? bayrağı ile) Proc
Oluşumu lambda { ... }, -> { ... } Proc.new { ... }, proc { ... }

Çoğu durumda, metodlara benzer davranış bloklarını iletmek için lambda kullanmak tercih edilir, çünkü argümanlar ve return ile daha öngörülebilirdir. Procs ise daha düşük seviyeli görevler veya return'in özel davranışının istenildiği durumlar için kullanılır.