do..end ve Süslü Parantezler
Coddy'nin Ruby Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 16 / 56.
Ruby size bir blok yazmanın iki yolunu sunar. Aynı anlama gelirler, ancak her birinin tercih edilen bir kullanım durumu vardır.
do...end çok satırlı bloklar içindir:
[1, 2, 3].each do |n|
doubled = n * 2
puts "#{n} -> #{doubled}"
endSüslü parantezler { ... }, kısa ve ifade biçimli tek satırlık bloklar içindir:
[1, 2, 3].each { |n| puts n * 2 }İkisinin öncelikleri biraz farklıdır, ancak öğrenenlerin ihtiyaç duyduğu kural stil kuralıdır: tek satırlıklar için süslü parantezler, çok satırlılar için do...end.
Her iki form da bir değer döndürebilir. Bloğun son ifadesi, map gibi metotlara geri döndürülen değerdir:
[1, 2, 3].map { |n| n * 10 } # [10, 20, 30]
[1, 2, 3].map do |n|
n * 10
end # [10, 20, 30]Görev
KolayGirdiden virgülle ayrılmış bir tamsayı listesi okuyun. İki satır yazdırın:
- Her sayıyı ikiyle çarpın ve
,ile birleştirin.mapiçin süslü parantez biçimini kullanın. - Her sayı için, her biri ayrı bir satırda olacak şekilde
"<n> squared is <n*n>"dizesini yazdırın.do...endiçineachbiçimini kullanın.
1,2,3 girdisi için çıktı şöyledir:
2, 4, 6
1 squared is 1
2 squared is 4
3 squared is 9Kendin dene
numbers = gets.chomp.split(",").map(&:to_i)
# TODO: satır 1, iki katına çıkarılmış, map'in süslü parantez (brace) formu, ", " ile birleştirilmiş
# TODO: 2..n satırları, kareleri, each'in do...end formu
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