如何在Ruby中打破case语句

时间:2016-03-17 05:37:25

标签: ruby

我有一个方法如下:

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

如果param1,我将在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

1 个答案:

答案 0 :(得分:2)

如果这是方法正文中的全部内容,那么只需return代替break

如果你不能那样做,那就做:

when 1
  unless <already executed for some similar data>
    #Some code
  end
when 2
...