【问题标题】: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 的提示!

标签: ruby variable-assignment modifier


【解决方案1】:

使用括号。所以你正在从任务中解救出来:

(item_one = Object.find(1)) rescue item_one, value = [Object.first, true]

【讨论】:

  • Touché,所以item_one 代表item_onevalue 的数组
猜你喜欢
  • 2013-12-27
  • 1970-01-01
  • 1970-01-01
  • 2015-08-10
  • 2018-03-29
  • 1970-01-01
  • 2020-05-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多