Menu
CoddyTech

Kata Kunci yield

Termasuk bagian Logika dan Alur dalam perjalanan Ruby di Coddy. Pelajaran 17 dari 56.

Method yang kamu definisikan sendiri dapat menerima block, sama seperti method bawaan. Di dalam method, kata kunci yield menjalankan block yang diberikan oleh pemanggil.

def greet
  puts "Before block"
  yield
  puts "After block"
end

greet do
  puts "Hi from the block!"
end
# Before block
# Hi from the block!
# After block

Kamu bisa meneruskan argumen ke blok dengan memberikannya kepada yield:

def with_each(items)
  items.each { |item| yield item }
end

with_each([10, 20, 30]) { |n| puts n }
# 10
# 20
# 30

Jika sebuah method memanggil yield tetapi pemanggil tidak memberikan block, Ruby akan menimbulkan error. block_given? memungkinkan kamu memeriksanya terlebih dahulu:

def maybe
  yield if block_given?
end

maybe                       # tidak terjadi apa-apa
maybe { puts "called!" }    # dipanggil!
challenge icon

Tantangan

Mudah

Definisikan method bernama repeat yang menerima satu argumen n (bilangan bulat) dan memberikan nilai 1, 2, ..., n kepada block-nya, satu per satu.

Lalu panggil method-mu dengan n = 4 dan block yang mencetak "Got <value>" untuk setiap nilai yang diberikan.

Output-nya adalah:

Got 1
Got 2
Got 3
Got 4

Coba sendiri

# TODO: definisikan `repeat` yang mengirimkan nilai 1..n ke bloknya

# TODO: panggil repeat(4) dengan blok yang mencetak "Got <value>"
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler Ruby online