【问题标题】:Ruby ternary operator and method callRuby 三元运算符和方法调用
【发布时间】:2015-05-06 07:34:32
【问题描述】:

我正在使用 ruby​​ 2.1.5,遇到三元运算符的一些问题

语法错误

request.xhr?  ? render :json => "success"  : redirect_to index_url

工作

request.xhr?  ? render(:json => "success") : redirect_to(index_url)

有人可以解释一下它的工作原理以及为什么上面的一个不能工作吗?提前致谢

【问题讨论】:

  • 我可能是错的,但我怀疑解析器知道在哪里拆分内容存在歧义,添加括号消除了这种歧义,将什么作为参数赋予什么。

标签: ruby ruby-2.1


【解决方案1】:

当您使用速记语法(不带括号)时,ruby 期望直到行尾的所有内容都是您的方法的参数。所以你的“语法错误”示例被理解为:

request.xhr?  ? render(:json => "success"  : redirect_to index_url)

这显然是错误的。

【讨论】:

  • 感谢您的解释
猜你喜欢
  • 2013-04-29
  • 1970-01-01
  • 1970-01-01
  • 2011-07-12
  • 2021-08-20
  • 2019-03-29
  • 2013-06-29
  • 1970-01-01
相关资源
最近更新 更多