Gelung rubi


Gelung dalam Ruby digunakan untuk melaksanakan blok kod yang sama beberapa kali. Bab ini akan memberikan pengenalan terperinci kepada semua pernyataan gelung yang disokong oleh Ruby.

Ruby sementara pernyataan

sintaks

while conditional [do]
   code
end

atau

<pre>
while conditional [:]
   code
end

dilaksanakan apabila bersyarat adalah benar >kod.

Dalam sintaks, lakukan atau : boleh ditinggalkan. Tetapi jika anda ingin menulis ungkapan while dalam satu baris, anda mesti memisahkan ungkapan bersyarat atau blok program dengan do atau :.

Instance

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

$i = 0
$num = 5

while $i < $num  do
   puts("在循环语句中 i = #$i" )
   $i +=1
end


Hasil keluaran contoh di atas ialah:

在循环语句中 i = 0
在循环语句中 i = 1
在循环语句中 i = 2
在循环语句中 i = 3
在循环语句中 i = 4

Ruby sementara Pengubah suai

Sintaks

code while condition

或者

begin 
  code 
end while conditional

Apabila bersyarat adalah benar, laksanakan kod.

Jika pengubah while mengikuti pernyataan mulakan tanpa klausa menyelamat atau memastikan, kod akan Dilaksanakan sekali sebelum bersyarat dinilai.

Instance

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

$i = 0
$num = 5
begin
   puts("在循环语句中 i = #$i" )
   $i +=1
end while $i < $num


Hasil keluaran contoh di atas ialah:

在循环语句中 i = 0
在循环语句中 i = 1
在循环语句中 i = 2
在循环语句中 i = 3
在循环语句中 i = 4

Ruby sehingga Kenyataan

until conditional [do]
   code
end

Apabila bersyarat adalah palsu, laksanakan kod.

Dalam sintaks, do boleh ditinggalkan. Tetapi jika anda ingin menulis formula sehingga pada satu baris, anda mesti memisahkan ungkapan bersyarat atau blok program dengan do.

Instance

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

$i = 0
$num = 5

until $i > $num  do
   puts("在循环语句中 i = #$i" )
   $i +=1;
end


Hasil keluaran contoh di atas ialah:

在循环语句中 i = 0
在循环语句中 i = 1
在循环语句中 i = 2
在循环语句中 i = 3
在循环语句中 i = 4
在循环语句中 i = 5

Ruby sehingga Pengubah suai

Sintaks

code until conditional

或者

begin
   code
end until conditional

Apabila bersyarat palsu, laksanakan kod.

Jika pengubah hingga mengikuti pernyataan mulakan tanpa klausa menyelamat atau memastikan, kod akan Dilaksanakan sekali sebelum bersyarat dinilai.

Instance

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

$i = 0
$num = 5
begin
   puts("在循环语句中 i = #$i" )
   $i +=1;
end until $i > $num


Hasil keluaran contoh di atas ialah:

在循环语句中 i = 0
在循环语句中 i = 1
在循环语句中 i = 2
在循环语句中 i = 3
在循环语句中 i = 4
在循环语句中 i = 5

Ruby untuk Kenyataan

Syntax

for variable [, variable ...] in expression [do]
   code
end

Mula-mula hitung ungkapan untuk mendapatkan objek, dan kemudian laksanakan kod sekali untuk setiap elemen dalam ungkapan.

Instance

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

for i in 0..5
   puts "局部变量的值为 #{i}"
end

Di sini kami telah menentukan julat 0..5. Pernyataan untuk i dalam 0..5 membenarkan nilai i dari 0 hingga 5, termasuk.


Hasil keluaran contoh di atas ialah:

局部变量的值为 0
局部变量的值为 1
局部变量的值为 2
局部变量的值为 3
局部变量的值为 4
局部变量的值为 5

untuk...dalam Gelung hampir bersamaan sepenuhnya dengan:

(expression).each do |variable[, variable...]| code end

Walau bagaimanapun, gelung for tidak mencipta skop baharu untuk pembolehubah setempat.

Dalam sintaks, do boleh ditinggalkan. Tetapi jika anda ingin menulis formula for pada satu baris, anda mesti memisahkan ungkapan bersyarat atau blok program dengan do.

Instance

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

(0..5).each do |i|
   puts "局部变量的值为 #{i}"
end


Hasil keluaran contoh di atas ialah:

局部变量的值为 0
局部变量的值为 1
局部变量的值为 2
局部变量的值为 3
局部变量的值为 4
局部变量的值为 5

Ruby break Kenyataan

Syntax

break

Menamatkan gelung paling dalam. Jika dipanggil dalam blok, tamatkan kaedah blok yang berkaitan (kaedah mengembalikan sifar).

Instance

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

for i in 0..5
   if i > 2 then
      break
   end
   puts "局部变量的值为 #{i}"
end


Hasil keluaran contoh di atas ialah:

局部变量的值为 0
局部变量的值为 1
局部变量的值为 2

Ruby seterusnya Kenyataan

Syntax

next

Lompat ke lelaran seterusnya bagi gelung. Jika dipanggil dalam blok, menamatkan pelaksanaan blok (hasil ungkapan mengembalikan sifar).

Contoh

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

for i in 0..5
   if i < 2 then
      next
   end
   puts "局部变量的值为 #{i}"
end


Hasil keluaran contoh di atas ialah:

局部变量的值为 2
局部变量的值为 3
局部变量的值为 4
局部变量的值为 5

Ruby buat semula Pernyataan

Sintaks

redo

Mulakan semula lelaran gelung paling dalam tanpa menyemak keadaan gelung. Jika dipanggil dalam blok, mulakan semula hasil atau panggil.

Instance

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

for i in 0..5
   if i < 2 then
      puts "局部变量的值为 #{i}"
      redo
   end
end

Ini akan menghasilkan keputusan berikut dan memasuki gelung tak terhingga:

局部变量的值为 0
局部变量的值为 0
............................

Ruby cuba semula Pernyataan

Nota: Versi 1.9 dan lebih baru tidak menyokong penggunaan cuba semula dalam gelung.

Sintaks

retry

Jika cuba semula muncul dalam klausa penyelamat ungkapan mula, mulakan semula dari permulaan badan permulaan.

begin
   do_something   # 抛出的异常
rescue
   # 处理错误
   retry          # 重新从 begin 开始
end

Mulakan semula panggilan lelaran jika cuba semula berlaku dalam lelaran, dalam blok atau dalam badan a for expression. Parameter lelaran dinilai semula.

for i in 1..5
   retry if some_condition # 重新从 i == 1 开始
end

Instance

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

for i in 1..5
   retry if  i > 2
   puts "局部变量的值为 #{i}"
end

Ini akan menghasilkan keputusan berikut dan memasuki gelung tak terhingga:

局部变量的值为 1
局部变量的值为 2
局部变量的值为 1
局部变量的值为 2
局部变量的值为 1
局部变量的值为 2
............................