Blok Ruby
Anda sudah tahu bagaimana untuk menentukan metode Ruby dan bagaimana Anda memanggil metode. Demikian pula, Ruby memiliki konsep blok.
- Blok terdiri dari banyak kode.
- Anda perlu mengambil nama blok.
- Blok kode selalu diapit kurung kurawal {} dalam.
- Dari yang selalu memblokir panggilan fungsi dengan nama yang sama. Ini berarti bahwa jika nama blok Anda untukujian,maka Anda ingin gunakan untuk menyebutnya bloktesfungsi.
- Anda dapat menggunakan pernyataanyielduntuk memanggil blok.
tatabahasa
block_name{ statement1 statement2 .......... }
Di sini Anda akan belajar bagaimana menggunakan pernyataanyieldsederhana untuk memanggil blok. Anda juga akan belajar bagaimana menggunakan pernyataanhasildengan parameter untuk yang disebut blok. Dalam contoh ini, Anda akan melihat dua jenis pernyataanhasil.
pernyataanyield
Mari kita lihat pernyataan contoh hasil:
#!/usr/bin/ruby # -*- coding: UTF-8 -*- def test puts "在 test 方法内" yield puts "你又回到了 test 方法内" yield end test {puts "你在块内"}
Contoh hasil operasi di atas sebagai berikut:
在 test 方法内 你在块内 你又回到了 test 方法内 你在块内
Anda juga bisa lewat pernyataan hasil dengan parameter. Berikut adalah contoh:
#!/usr/bin/ruby # -*- coding: UTF-8 -*- def test yield 5 puts "在 test 方法内" yield 100 end test {|i| puts "你在块 #{i} 内"}
Contoh hasil operasi di atas sebagai berikut:
你在块 5 内 在 test 方法内 你在块 100 内
Di sini, setelah pernyataanyielddiikuti parameter. Anda bahkan dapat melewati beberapa parameter. Di blok, Anda dapat menempatkan sebuah variabel antara dua bar vertikal untuk menerima parameter. Dengan demikian, dalam kode di atas, yield 5 pernyataan dilewatkan sebagai parameter dengan nilai 5 potongan uji.
Sekarang, melihat pernyataan berikut:
test {|i| puts "你在块 #{i} 内"}
Di sini, nilai 5 akan menerima variabel i. Sekarang, kami menempatkan mengamati pernyataan berikut:
puts "你在块 #{i} 内"
Hal ini menempatkan pernyataan output:
你在块 5 内
Jika Anda ingin melewati beberapa parameter, maka pernyataanhasiladalah sebagai berikut:
yield a, b
Pada saat ini, seperti yang ditunjukkan di blok:
test {|a, b| statement}
Parameter dipisahkan dengan koma.
Blok dan metode
Anda telah melihat antara blok dan metode bagaimana saling terkait. Anda biasanya menggunakan pernyataan yield panggilan blok dari metode yang memiliki nama yang sama. Oleh karena itu, kode tersebut adalah sebagai berikut:
#!/usr/bin/ruby def test yield end test{ puts "Hello world"}
Contoh ini adalah cara paling sederhana untuk mencapai blok. Anda menggunakan pernyataanyieldpanggilan blok tes.
Tetapi jika parameter terakhir sebelum metode dengan & maka Anda dapat metode dilewatkan blok, dan blok ini dapat ditugaskan untuk parameter terakhir. Jika * dan & juga muncul dalam daftar parameter, & harus ditempatkan di bagian belakang.
#!/usr/bin/ruby def test(&block) block.call end test { puts "Hello World!"}
Contoh hasil operasi di atas sebagai berikut:
Hello World!
BEGIN dan blok END
Setiap file sumber Ruby dapat mendeklarasikan ketika blok kode (BEGIN blok) ketika file tersebut dimuat untuk menjalankan, dan setelah program selesai mengeksekusi blok kode untuk menjalankan (END blok).
#!/usr/bin/ruby BEGIN { # BEGIN 代码块 puts "BEGIN 代码块" } END { # END 代码块 puts "END 代码块" } # MAIN 代码块 puts "MAIN 代码块"
Sebuah program dapat berisi beberapa BEGIN dan END blok. BEGIN blok dijalankan dalam urutan di mana mereka muncul. blok END seperti yang ditampilkan dalam urutan terbalik. Ketika dijalankan, program di atas menghasilkan hasil sebagai berikut:
BEGIN 代码块 MAIN 代码块 END 代码块