Batu delima
Anda sudah tahu cara Ruby mentakrifkan kaedah dan cara anda memanggilnya. Begitu juga, Ruby mempunyai konsep blok. Blok
terdiri daripada sejumlah besar kod.
Anda perlu memberi nama pada blok itu. Kod dalam blok
sentiasa disertakan dalam pendakap kerinting {}. Blok
sentiasa dipanggil daripada fungsi dengan nama yang sama dengannya. Ini bermakna jika nama blok anda ialah test, maka anda mahu menggunakan fungsi test untuk memanggil blok ini.
Anda boleh menggunakan pernyataan hasil untuk memanggil blok.
Syntax
block_name{ statement1 statement2 .......... }
Di sini anda akan belajar cara memanggil blok menggunakan pernyataan hasil yang mudah. Anda juga akan belajar cara memanggil blok menggunakan pernyataan hasil dengan parameter. Dalam contoh, anda akan melihat kedua-dua jenis pernyataan hasil.
hasil Penyata
Mari kita lihat contoh pernyataan hasil:
#!/usr/bin/ruby # -*- coding: UTF-8 -*- def test puts "在 test 方法内" yield puts "你又回到了 test 方法内" yield end test {puts "你在块内"}
Hasil daripada contoh di atas ialah :
在 test 方法内 你在块内 你又回到了 test 方法内 你在块内
Anda juga boleh menghantar pernyataan hasil dengan parameter. Berikut ialah contoh:
#!/usr/bin/ruby # -*- coding: UTF-8 -*- def test yield 5 puts "在 test 方法内" yield 100 end test {|i| puts "你在块 #{i} 内"}
Hasil contoh di atas ialah:
你在块 5 内 在 test 方法内 你在块 100 内
Di sini, pernyataan hasil diikuti mengikut parameter. Anda juga boleh melepasi berbilang parameter. Dalam blok, anda meletakkan pembolehubah antara dua bar menegak untuk menerima parameter. Jadi, dalam kod di atas, pernyataan hasil 5 melepasi nilai 5 sebagai parameter kepada blok ujian.
Sekarang, lihat kenyataan berikut:
test {|i| puts "你在块 #{i} 内"}
Di sini, nilai 5 akan diterima dalam pembolehubah i. Sekarang, perhatikan pernyataan puts berikut:
puts "你在块 #{i} 内"
Output pernyataan puts ini ialah:
你在块 5 内
Jika anda ingin lulus berbilang parameter, maka pernyataan hasil kelihatan seperti ini :
yield a, b
Pada ketika ini, blok kelihatan seperti ini:
test {|a, b| statement}
Parameter dipisahkan dengan koma.
Blok dan Kaedah
Anda telah melihat bagaimana blok dan kaedah berkaitan antara satu sama lain. Anda biasanya menggunakan pernyataan hasil untuk memanggil blok daripada kaedah yang mempunyai nama yang sama dengannya. Oleh itu, kodnya kelihatan seperti ini:
#!/usr/bin/ruby def test yield end test{ puts "Hello world"}
Contoh ini ialah cara paling mudah untuk melaksanakan blok. Anda memanggil blok ujian menggunakan pernyataan hasil.
Tetapi jika parameter terakhir kaedah didahului oleh &, maka anda boleh menghantar blok ke kaedah dan blok boleh diberikan kepada parameter terakhir. Jika * dan & muncul dalam senarai parameter pada masa yang sama, & harus diletakkan selepas.
#!/usr/bin/ruby def test(&block) block.call end test { puts "Hello World!"}
Hasil contoh di atas ialah:
Hello World!
MULA dan TAMAT blok
Setiap fail sumber Ruby boleh diisytiharkan apabila fail dimuatkan Blok kod untuk dijalankan apabila atur cara menyelesaikan pelaksanaan (blok BEGIN), dan blok kod untuk dijalankan selepas atur cara menyelesaikan pelaksanaan (blok END).
#!/usr/bin/ruby BEGIN { # BEGIN 代码块 puts "BEGIN 代码块" } END { # END 代码块 puts "END 代码块" } # MAIN 代码块 puts "MAIN 代码块"
Sesuatu program boleh mengandungi berbilang blok BEGIN dan END. Blok BEGIN dilaksanakan mengikut susunan ia muncul. Blok TAMAT dilaksanakan dalam susunan terbalik di mana ia muncul. Apabila dilaksanakan, program di atas menghasilkan hasil berikut:
BEGIN 代码块 MAIN 代码块 END 代码块