在Ruby

时间:2018-04-26 08:19:12

标签: ruby

我的开关案例如下:

def result
  case params[:q]
  when "r4c_001"
    result = "r4c"
    description = "001"
  end
end

当我在when内处理单个值时,我也可以将其实现为:

def result
  result = case params[:q]
  when "r4c_001"
    "r4c"
  end
end

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

def result
  result, description = case params[:q]
  when "r4c_001"
    result = "r4c"
    description = "001"
  end
end

感谢您的帮助。

2 个答案:

答案 0 :(得分:6)

def result
  case params[:q]
  when "r4c_001"
    ["r4c", "001"]
  end
end

并将其用作:

result, description = result()

旁注:在这种特殊情况下,可以更轻松地实现同样的目标:

def result
  params[:q].split('_') if params[:q] == "r4c_001"
end

Sidenote2:除非params是同一个类的方法,返回对象的实例,回复#[],您应该将params传递给方法明确:

def result(params)
  case params[:q]
  when "r4c_001"
    ["r4c", "001"]
  end
end

并将其用作:

result, description = result(params)

答案 1 :(得分:2)

看起来您想要从result方法返回两个值。你可以在return语句中做到这一点。

def result
 case params[:q]
 when "r4c_001"
  return "r4c", "001"
 end
end

result, description = result()

我刚刚看到了mudasobwa的答案,他的旁注是一个很好的观点,可以为你节省很长时间的陈述。