Menu
Coddy logo textTech

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
# 30

Eğ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ı!
challenge icon

Görev

Kolay

repeat 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 4

Kendin 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
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

Kendi başına pratik yap: Online Ruby derleyicisi