Menu
Coddy logo textTech

Proc'lar ve Lambda'lar

Coddy'nin Ruby Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 19 / 56.

Bir blok bir nesne değildir; onu bir değişkende saklayamazsın. Etrafında dolaştırabileceğin, kaydedebileceğin ve daha sonra çağırabileceğin bir kod parçası istediğinde, onu bir Proc veya bir lambda içine sararsın.

Bir Proc, Proc.new veya proc anahtar sözcüğüyle oluşturulur. .call ile çağırın:

double = proc { |n| n * 2 }
puts double.call(5)   # 10
puts double.call(7)   # 14

Lambda benzerdir ancak daha katıdır; doğru sayıda bağımsız değişken aktardığını kontrol eder. Ok biçimi -> yaygın yazımdır:

square = ->(n) { n * n }
puts square.call(4)   # 16
puts square.(4)       # 16  (.call için kısaltma)

Her ikisi de, başına & eklenerek bir blok bekleyen metoda aktarılabilir:

[1, 2, 3].map(&double)   # [2, 4, 6]
[1, 2, 3].map(&square)   # [1, 4, 9]

Daha sıkı bağımsız değişken denetimi istediğinde bir lambda kullan; daha hafif ve daha hoşgörülü bir davranış istediğinde bir Proc kullan.

challenge icon

Görev

Kolay

tripler adlı, bir sayı alan ve bu sayıyı 3 ile çarparak döndüren bir lambda oluşturun.

Ardından virgülle ayrılmış bir tamsayı listesi okuyun ve ayrı satırlarda şunları yazdırın:

  1. tripler.call(10) çağrısının sonucu
  2. Girdi sayılarını üç katına çıkarın (map(&tripler) kullanın) ve , ile birleştirin

1,2,3 girdisi için çıktı şöyledir:

30
3, 6, 9

Kendin dene

# TODO: `tripler`'ı bir lambda olarak tanımla

numbers = gets.chomp.split(",").map(&:to_i)

# TODO: satır 1, tripler.call(10) yazdır
# TODO: satır 2, numbers'ı &tripler ile map'le, ", " ile birleştir
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık ve Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online Ruby derleyicisi