我的开关案例如下:
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
感谢您的帮助。
答案 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的答案,他的旁注是一个很好的观点,可以为你节省很长时间的陈述。