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ıyordunuz. Her each do |x| ... end yazdığınızda, do ve end arasındaki kısım bir blok idi: bir metoda aktarılan bir kod parçası.
[1, 2, 3].each do |n|
puts n * 2
endBurada, each dizi üzerinde bir metottur ve do |n| ... end bloktur. each bloğu her bir öğe için bir kez çalıştırır ve onu n olarak içeri aktarır.
Bloklar, değişkenlerde sakladığınız ayrı nesneler değildir; doğrudan metot çağrısına bağlıdırlar. Bir metot ya bir blok alır ya da almaz ve çoğu yineleme metodu (each, map, select, times) bir tane alacak şekilde tasarlanmıştır.
3.times do |i|
puts "hi #{i}"
endBir metodu bloğu olmadan çağırmak, ne yaptığını değiştirir. Blok içermeyen [1,2,3].map, dönüştürülmüş bir dizi yerine bir numaralandırıcı (enumerator) döndürür, bu nedenle blok, metodun ne anlama geldiğinin bir parçasıdır.
Görev
BaşlangıçGirdiden bir n tam sayısı okuyun. 0'dan n - 1'e kadar olan her bir i değeri için Iteration <i> mesajını yazdırmak üzere bir blok ile times metodunu kullanın.
3 girdisi için çıktı şöyledir:
Iteration 0
Iteration 1
Iteration 2Kopya kağıdı
Bir blok, bir metoda do |param| ... end arasında iletilen bir kod parçasıdır:
[1, 2, 3].each do |n|
puts n * 2
endBir bloğu n kez tekrarlamak için times kullanın; burada i, 0'dan n - 1'e kadar gider:
3.times do |i|
puts "hi #{i}"
endKendin dene
n = gets.to_i
# YAPILACAK: her yinelemeyi yazdırmak için bir blok ile n.times kullanın
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
1Derinlemesine Stringler
String Metotlarına Genel BakışString InterpolationStringler Üzerinde GezinmeSplit ve JoinÖzet - String Weaver4Bloklar, Procs ve Lambdalar
Blok Nedir?do..end ve Süslü Parantezleryield Anahtar KelimesiBlok ParametreleriProcs ve LambdalarÖzet - Özel İteratör7Hashes Bölüm 2
Varsayılan Değerlerle Hash.newHash Yapıları Üzerinde Yinelemeİç İçe Hash YapılarıBirleştirme ve DönüştürmeÖzet - Frekans Sayacı10Proje - Öğrenci Kayıtları
Projeye Genel BakışÖğrenci Ekle5Enumerable Gücü
Select ve RejectMap ZincirlemeReduce / Injectcount, all?, any?, none?group_by ve partitionsort_by, min_by, max_byÖzet - Data Pipeline8İleri Seviye Karar Yapıları
Sınıflar ve Regex ile CaseÇok Değerli whenTernary OperatörüSatır İçi if / unlessÖzet - Not Sınıflandırıcı