Latest web development tutorials

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 代码块