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çindekireturngibi).
# 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.