我有一个方法如下:
def something(param)
case param
when 1
break if <already executed for some similar data>
#Some code
when 2
#Some code
else
#Some code
end
end
如果param
是1
,我将在DB中创建一条记录。在这种情况下,我需要检查相同的数据是否已经存在,如果是,我需要突破when
。
当我尝试break if <condition>
时,我收到此错误:
Can't escape from eval with break
作为一个解决方案,我可以在case语句之前更改param
的值,以便它(when 1
)永远不会满足条件:
def something(param)
param = 0 if <condition>
case param
when 1
.
.
但我觉得这很难看。
break
用于打破循环,但我需要它的等价物,就像switch statement` break一样。
a = 1
b = 1
case a
when 1
return if b == 1
p "Code Executed"
end
给了我:
LocalJumpError: unexpected return
答案 0 :(得分:2)
如果这是方法正文中的全部内容,那么只需return
代替break
。
如果你不能那样做,那就做:
when 1
unless <already executed for some similar data>
#Some code
end
when 2
...