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 tam sayı listesi okuyun. İki satır yazdırın:
- Her sayının iki katı,
,ile birleştirilmiş.mapmetodunun süslü parantez (brace) formunu kullanın. - Her sayı için her satıra bir tane gelecek şekilde
"<n> squared is <n*n>"dizesi.eachmetodunundo...endformunu kullanın.
1,2,3 girdisi için çıktı şöyledir:
2, 4, 6
1 squared is 1
2 squared is 4
3 squared is 9Kopya kağıdı
Ruby bloklarının iki sözdizimi vardır:
Tek satırlık bloklar için Süslü parantezler { ... }:
[1, 2, 3].map { |n| n * 2 } # [2, 4, 6]Çok satırlık bloklar için do...end:
[1, 2, 3].each do |n|
doubled = n * 2
puts "#{n} -> #{doubled}"
endHer iki form da bloğun son ifadesini döndürür (map gibi metotlar tarafından kullanılır).
Kendin 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
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ı