Nasıl ruby bloğu dışarı kırmak için?
Burada Bar#do_things
:
class Bar
def do_things
Foo.some_method(x) do |x|
y = x.do_somethign
return y_is_bad if y.bad? # how do i tell it to stop and return do_things?
y.do_something_else
end
keep_doing_more_things
end
end
Ve burada Foo#some_method
:
class Foo
def self.some_method(targets, &block)
targets.each do |target|
begin
r = yield(target)
rescue
failed << target
end
end
end
end
Zam kullanma hakkında düşündüm, ama genel yapmaya çalışıyorum, Foo
herhangi bir belirli bir şey koymak istemiyorum.
CEVAP
10* *anahtar kelime kullanın.
Düzenleme:
Eğer bir sonraki öğeye devam etmek istiyorsanız, break
kullanın.
Bir blok içinde bir sonraki kullanımı: Sonraki bir blok içinde kullanıldığında, blok hemen çıkın, sonra tekrar blok çağırarak yeni bir döngü başlayacak olan yineleyici yöntemi, denetimi döndürmeden neden olur:
f.each do |line| # Iterate over the lines in file f
next if line[0,1] == "#" # If this line is a comment, go to the next
puts eval(line)
end
Blok kırmak kullanımı: Bir blok kullanıldığında, transferler yineleyici çağırma aşağıdaki ilk ifade bloğu çağrıldığında yineleyici dışında blok ve kontrol kır
f.each do |line| # Iterate over the lines in file f
break if line == "quit\n" # If this break statement is executed...
puts eval(line)
end
puts "Good bye" # ...then control is transferred here
Ve son olarakbir blok içinde geri dönüş kullanımı: Her zaman geri dönmek kapsayan yöntemi, blok içinde ne kadar iç içe olursa olsun, (Lambda durumu hariç) neden olur:
def find(array, target)
array.each_with_index do |element,index|
return index if (element == target) # return from find
end
nil # If we didn't find the element, return nil
end
Nasıl Ruby dış döngüyü kırmak için?...
Nasıl Ruby alt veya üst durumda bir di...
Nasıl Ruby rastgele bir sayı almak içi...
Nasıl en iyi Ruby rastgele bir dize ol...
Nasıl bir ruby gem belirli bir sürümün...