Menu
Coddy logo textTech

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: c

Bir hash üzerinde döngü oluştururken, blok parametreleri anahtar ve değerdir:

{ a: 1, b: 2 }.each do |key, value|
  puts "#{key} = #{value}"
end

Blok 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.

challenge icon

Görev

Kolay

scores 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 - 78

Kopya 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}"
end

hash.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}"
end

Kendin 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
quiz iconKendini test et

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