Blok Nedir?
Coddy'nin Ruby Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 15 / 56.
Zaten bloklar yazıyordun. Her each do |x| ... end yazdığında, do ile end arasındaki kısım bir blok idi: bir metoda aktarılan kod parçası.
[1, 2, 3].each do |n|
puts n * 2
endBurada each, dizi üzerinde bir metottur ve do |n| ... end bloktur. each, her öğe için bloğu bir kez çalıştırır ve öğeyi n olarak aktarır.
Bloklar, değişkenlerde sakladığınız ayrı nesneler değildir; doğrudan yöntem çağrısına bağlıdırlar. Bir yöntem ya bir blok alır ya da almaz ve yineleme yöntemlerinin çoğu (each, map, select, times) bir blok alacak şekilde tasarlanmıştır.
3.times do |i|
puts "hi #{i}"
endBir yöntemi bloğu olmadan çağırmak, yaptığı şeyi değiştirir. Blok olmadan [1,2,3].map, dönüştürülmüş bir dizi yerine bir enumerator döndürür; dolayısıyla blok, yöntemin ne anlama geldiğinin bir parçasıdır.
Görev
BaşlangıçGirdiden bir tamsayı n okuyun. 0 ile n - 1 arasındaki her i değeri için Iteration <i> mesajını yazdırmak üzere bir blokla times yöntemini kullanın.
3 girdisi için çıktı şöyledir:
Iteration 0
Iteration 1
Iteration 2Kendin dene
n = gets.to_i
# TODO: her yinelemeyi yazdırmak için bir blok ile n.times kullan
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
1Dizeler Detaylı İnceleme
Dize Metotlarına Genel BakışDize EnterpolasyonuDizeler Üzerinde YinelemeBölme ve BirleştirmeTekrar - Dize Dokuyucu4Bloklar, Proc'lar ve Lambda'lar
Blok Nedir?do..end ve Süslü Parantezleryield Anahtar SözcüğüBlok ParametreleriProc'lar ve Lambda'larÖzet - Özel Yineleyici7Hash'ler 2. Bölüm
Varsayılanlarla Hash.newHash'ler Üzerinde Yinelemeİç İçe Hash'lerBirleştirme ve DönüştürmeTekrar - Frekans Sayacı10Proje - Öğrenci Kayıtları
Projeye Genel BakışÖğrenci Ekle5Enumerable Gücü
Seçme ve ReddetmeMap ZincirlemeReduce / Injectcount, all?, any?, none?group_by ve partitionsort_by, min_by, max_byTekrar - Veri HattıKendi başına pratik yap: Online Ruby derleyicisi