在Ruby中存储switch case的结果

san*_*mar 1 ruby

我有一个开关盒如下:

def result
  case params[:q]
  when "r4c_001"
    result = "r4c"
    description = "001"
  end
end
Run Code Online (Sandbox Code Playgroud)

当我在内部处理单值时when,我也可以实现它:

def result
  result = case params[:q]
  when "r4c_001"
    "r4c"
  end
end
Run Code Online (Sandbox Code Playgroud)

如何为多个值执行此操作,例如:

def result
  result, description = case params[:q]
  when "r4c_001"
    result = "r4c"
    description = "001"
  end
end
Run Code Online (Sandbox Code Playgroud)

非常感谢您的帮助.

Ale*_*kin 6

def result
  case params[:q]
  when "r4c_001"
    ["r4c", "001"]
  end
end
Run Code Online (Sandbox Code Playgroud)

并将其用作:

result, description = result()
Run Code Online (Sandbox Code Playgroud)

旁注:在这种特殊情况下,可以更容易地实现相同的目标:

def result
  params[:q].split('_') if params[:q] == "r4c_001"
end
Run Code Online (Sandbox Code Playgroud)

Sidenote2:除非params是同一个类的方法,返回一个对象的实例,响应#[],你应该params显式传递给方法:

def result(params)
  case params[:q]
  when "r4c_001"
    ["r4c", "001"]
  end
end
Run Code Online (Sandbox Code Playgroud)

并将其用作:

result, description = result(params)
Run Code Online (Sandbox Code Playgroud)