yield Anahtar Sözcüğü
Coddy'nin Ruby Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 17 / 56.
Kendi tanımladığınız metotlar, tıpkı yerleşik olanlar gibi bir blok alabilir. Metodun içinde, yield anahtar kelimesi çağıranın ilettiği bloğu çalıştırır.
def greet
puts "Before block"
yield
puts "After block"
end
greet do
puts "Hi from the block!"
end
# Blok öncesi
# Bloktan selamlar!
# Blok sonrasıArgümanları yield ifadesine vererek bloğa geçirebilirsiniz:
def with_each(items)
items.each { |item| yield item }
end
with_each([10, 20, 30]) { |n| puts n }
# 10
# 20
# 30Eğer bir metot yield çağırırsa ancak çağıran bir blok geçmediyse, Ruby bir hata fırlatır. block_given? önce kontrol etmenizi sağlar:
def maybe
yield if block_given?
end
maybe # hiçbir şey olmaz
maybe { puts "called!" } # çağrıldı!Görev
Kolayrepeat adında, bir n bağımsız değişkeni (bir tamsayı) alan ve 1, 2, ..., n değerlerini bloğuna teker teker veren bir yöntem tanımlayın.
Ardından yönteminizi n = 4 ile ve verilen her değer için "Got <value>" yazdıran bir blokla çağırın.
Çıktı:
Got 1
Got 2
Got 3
Got 4Kendin dene
# TODO: bloğuna 1..n yield eden `repeat` metodunu tanımlayın
# TODO: "Got <value>" yazdıran bir blok ile repeat(4) çağrısı yapı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
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