你可以在救援修饰符中放置多个赋值吗?

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_onevalue 的数组

以上是关于你可以在救援修饰符中放置多个赋值吗?的主要内容,如果未能解决你的问题,请参考以下文章

Java_Final修饰符

vue事件修饰符和键盘事件

final关键字和权限修饰符

const修饰符使用

关键字 修饰符

java中访问权限修饰符解析