Ruby编程中关于中断和返回的用法教程编程中关于中断和返回的用法教程
主要介绍了Ruby编程中关于中断和返回的用法教程,作者用代码举例讲解了其中需要注意的问题,需要的朋友可以
参考下
return,break,next 这几个关键字的使用都涉及到跳出作用域的问题,而他们的不同 则在于不同的关键字跳出去的目的作用
域的不同,因为有代码块则导致有一些地方需要格外注意。
return
常用方式
通常情况下的return语句和大家理解的意思是相同的。
def m1 param
if param == 1
return 'returned 1'
end
'returned default value' # 根据Ruby语言规范,最后一条执行语句的结果将作为返回值返回,return是可选的
end
m1(1) # => returned 1
m1(2) # => returned default value
在有异常捕获的ensure时,情况会稍有不同:
def m1
'return default'
ensure
puts 'I am sure that it will be here!'
end
m1 # => return default
像这种情况,在ensure语句之前,无论是否显示用return来返回,m1方法都会返回ensure之前的值, ensure语句只是确保之
后的代码块puts 'I am sure that it will be here!'执行,但是不会从这里返回。 如果在ensure语句中显示的用return来返回值时,
情况就不一样了。示例如下:
def m1
return 'return default'
ensure
return 'I am sure that it will be here!'
end
m1 # => I am sure that it will be here!
无论在ensure之前是否显示返回,都只会返回ensure之后的值。
在有代码块干预的情况下,又会有所不同:
def m1
p 'start ... '
proc do
p 'block start'
return
p 'block end'
end.call
p 'end ... '
end
m1
# 输出结果:
#
# "start ... "
# "block start"
这个应该是在预料之中的,再看下一个:
def m1
p 'start ... '
-> do
p 'block start'
return
p 'block end'