Jika saya ingin melakukan sesuatu seperti ini:
collection.each do |i|
return nil if i == 3
..many lines of code here..
end
Bagaimana saya mendapatkan efek itu? Saya tahu saya bisa membungkus semuanya di dalam blok dengan pernyataan if yang besar, tetapi saya ingin menghindari bersarang jika memungkinkan.
Istirahat tidak akan berfungsi di sini, karena saya tidak ingin menghentikan iterasi elemen yang tersisa.
next value
danbreak value
. Persis apa yang saya cari.break value
tidak bekerja untuk saya, sementaranext value
bekerja dengan baik. Terima kasih banyak.next
danbreak
sama sekali tidak spesifik untuk perulangan konstruksi, jadi artikel yang Anda tautkan sangat menyesatkan (karena sangat menyiratkan sebaliknya). Dan uraian saya pasti benar ketikanext
danbreak
digunakan di dalam blok (perhatikan bahwawhile
danfor
jarang, jika pernah, digunakan di Ruby jadi 99% penggunaannext
danbreak
berada di dalam blok).#!/usr/bin/ruby collection = [1, 2, 3, 4, 5 ] stopped_at = collection.each do |i| break i if i == 3 puts "Processed #{i}" end puts "Stopped at and did not process #{stopped_at}"
sumber
Dalam contoh ini, Anda dapat menggunakan break untuk menghentikan loop lebih awal:
collection.each do |i| break if i == 3 ...many lines end
... tentu saja, ini mengasumsikan bahwa Anda tidak benar-benar ingin mengembalikan nilai, hanya keluar dari blok.
sumber
break
di Ruby -break 5
akan menyebabkaneach
pengembalian 5.