test do |i|
XXX if i > 1
# a lot of code appears below
end
I have code above and wonder if it is possible to use
return/break/anything to stop execution of block and return control to
test() to execute code after yield. I know it is impossible in 1.8. How
about 1.9? Does anyone feel this is an important feature to have?
test do |i|
XXX if i > 1
# a lot of code appears below
end
I have code above and wonder if it is possible to use
return/break/anything to stop execution of block and return control to
test() to execute code after yield. I know it is impossible in 1.8. How
about 1.9? Does anyone feel this is an important feature to have?
It is possible in 1.8, using the next keyword:
def test
puts 'before'
yield 2
puts 'after'
end
test do |i|
next if i > 1
puts "a lot of code"
end
···
--
vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407
Why is it impossible? Doesn't "break" do what you need? (And remember,
"break" and "next" can even return a value from a block to the yielder.)
m.
···
Guoliang Cao <gcao@vonage.com> wrote:
def test
puts 'before'
yield 2
puts 'after'
end
test do |i|
XXX if i > 1
# a lot of code appears below
end
I have code above and wonder if it is possible to use
return/break/anything to stop execution of block and return control to
test() to execute code after yield. I know it is impossible in 1.8.
test do |i|
XXX if i > 1
# a lot of code appears below
end
I have code above and wonder if it is possible to use
return/break/anything to stop execution of block and return control to
test() to execute code after yield. I know it is impossible in 1.8.
Why is it impossible? Doesn't "break" do what you need? (And remember,
"break" and "next" can even return a value from a block to the yielder.)
Nope, break will skip the "after" line.
--
vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407
I have code above and wonder if it is possible to use
return/break/anything to stop execution of block and return control to
test() to execute code after yield. I know it is impossible in 1.8. How
about 1.9? Does anyone feel this is an important feature to have?
It is possible in 1.8, using the next keyword:
def test
puts 'before'
yield 2
puts 'after'
end
test do |i|
next if i > 1
puts "a lot of code"
end
I have code above and wonder if it is possible to use
return/break/anything to stop execution of block and return control to
test() to execute code after yield. I know it is impossible in 1.8. How
about 1.9?
It is possible in 1.8, using the next keyword:
Slightly modified:
def f ; puts "A" ; puts yield ; puts "Z" ; "F" ; end
f { next "X" ; puts "Y" } #=> "F"
puts "-"
f { break "X" ; puts "Y" } #=> "X"
The output is:
A
X
Z
···
Am Freitag, 05. Jun 2009, 06:48:43 +0900 schrieb Joel VanderWerf:
-
A
matt neuburg wrote:
> Guoliang Cao <gcao@vonage.com> wrote:
>
>> def test
>> puts 'before'
>> yield 2
>> puts 'after'
>> end
>>
>> test do |i|
>> XXX if i > 1
>> # a lot of code appears below
>> end
>>
>>
>> I have code above and wonder if it is possible to use
>> return/break/anything to stop execution of block and return control to
>> test() to execute code after yield. I know it is impossible in 1.8.
>
> Why is it impossible? Doesn't "break" do what you need? (And remember,
> "break" and "next" can even return a value from a block to the yielder.)