Blok Parametreleri
Coddy'nin Ruby Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 18 / 56.
Dikey çizgiler (pipe) arasındaki değişkenler, |x|, |x, y|, blok parametreleridir. Bunlar, metodun bloğa aktardığı değerleri isimlendirir.
Bazı metotlar tek bir değer iletir, diğerleri ise birkaç tane. each her seferinde bir öğe iletir:
[10, 20, 30].each { |n| puts n }each_with_index iki değer iletir: öğe ve indeksi:
["a", "b", "c"].each_with_index do |letter, i|
puts "#{i}: #{letter}"
end
# 0: a
# 1: b
# 2: cBir hash üzerinde döngü oluştururken, blok parametreleri anahtar ve değerdir:
{ a: 1, b: 2 }.each do |key, value|
puts "#{key} = #{value}"
endBlok parametrelerinin sayısı ve sırası, metodun ne döndürdüğüne (yield) bağlıdır. Şüpheye düştüğünüzde dokümanları kontrol edin veya bir parametre deneyip ne elde ettiğinizi görün.
Görev
Kolayscores hash'i verilmiştir. Hem (name, points) çiftine hem de konumuna erişebilmek için bu hash'i to_a formu üzerinde each_with_index ile yineleyin. Her girdi için şu formatta bir satır yazdırın:
<rank>. <name> - <points>Burada rank 1'den başlar (0 değil).
Varsayılan hash için çıktı şöyledir:
1. Alice - 90
2. Bob - 85
3. Cara - 78Kopya kağıdı
Blok parametreleri boru işaretleri |...| arasında adlandırılır ve metot tarafından sunulan (yield edilen) değerleri alır:
# each – bir parametre
[10, 20, 30].each { |n| puts n }
# each_with_index – eleman ve indeks
["a", "b", "c"].each_with_index do |letter, i|
puts "#{i}: #{letter}"
end
# hash each – anahtar ve değer
{ a: 1, b: 2 }.each do |key, value|
puts "#{key} = #{value}"
endhash.to_a bir hash'i [anahtar, değer] çiftlerinden oluşan bir diziye dönüştürür, bu each_with_index ile birlikte kullanışlıdır:
{ a: 1, b: 2 }.to_a.each_with_index do |(key, value), i|
puts "#{i}: #{key} = #{value}"
endKendin dene
scores = { "Alice" => 90, "Bob" => 85, "Cara" => 78 }
# TODO: her giriş için "<rank>. <name> - <points>" yazdırın, sıralama 1'den başlar
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ı