你可以在救援修饰符中放置多个赋值吗?
Posted
技术标签:
【中文标题】你可以在救援修饰符中放置多个赋值吗?【英文标题】:Can you put multiple assignment in rescue modifier? 【发布时间】:2012-10-12 16:28:23 【问题描述】:假设我有这个:
item_one = Object.find(1) rescue item_one, value = [Object.first, true]
这实际上是行不通的。它返回这个:
syntax error, unexpected '=', expecting $end
有人知道如何在语法上将多个赋值放在救援修饰符中吗?
旁注:
Boris 建议以这种方式设置救援语句:
begin
i1 = Object.find 1
rescue NoMethodError
i1, v = Object.first, true
end
【问题讨论】:
我非常喜欢将 Ruby 行加长,但救援单行实际上只适用于最简单的情况。 @BorisStitnicky 你会推荐什么? 多线救援:begin i1 = Object.find 1; rescue NoMethodError; i1, v = Object.first, true end
。它消除了语法歧义,并为您提供了指定要挽救的错误的巨大优势。相信我,oneliner rescue
只是一个非常不健康的语法糖,一定要非常谨慎地使用它们。
感谢@BorisStitnicky 的提示!
【参考方案1】:
使用括号。所以你正在从任务中解救出来:
(item_one = Object.find(1)) rescue item_one, value = [Object.first, true]
【讨论】:
Touché,所以item_one
代表item_one
和value
的数组以上是关于你可以在救援修饰符中放置多个赋值吗?的主要内容,如果未能解决你的问题,请参考以下文章