Ruby中Invalid break (SyntaxError)报错求助:函数内break使用异常
Ruby方法内用break报错的原因及解决办法
问题本质
Ruby里的break不是用来终止普通方法执行的——它的作用是跳出循环、代码块(block),或者在顶层作用域里直接终止整个脚本。
你在函数外的代码能运行,是因为顶层(main上下文)属于Ruby的顶级执行上下文,这里的break会直接结束脚本,所以不会报错;但在自定义方法cond里,没有可跳出的循环或block,Ruby就会抛出Invalid break的语法错误。
解决办法
如果只是想在不匹配时终止方法执行,把break换成return就行,这是Ruby方法里退出的正确方式:
def cond(x,y) if x =~ /#{y}/ puts "ok" else puts "not ok" return # 终止方法,返回调用处 end end result = `ls /path/to/some/file | grep something` cond(result,"nothing")
如果你的实际需求是配合循环跳出,可以把逻辑放到block里(比如用loop或者迭代器),但从你的代码来看,用return就足够解决当前问题。
内容的提问来源于stack exchange,提问作者mila002
相关产品推荐
相关产品推荐

