【问题标题】:What does the operator ?= mean?运算符 ?= 是什么意思?
【发布时间】:2016-07-23 13:02:54
【问题描述】:

我有一个 hamlc(称为 Haml + Inline CoffeeScript),它有一行像

- @variable1 ?= @object1.element[0]

我想知道这是否意味着:如果@object1.element[0] 有一个值,则将其存储在@variable1 中。

我找不到任何有关 hamlc 的信息。另外,如果我的理解是对的,如果我想添加一个else 条件呢?

【问题讨论】:

  • - if variable1 ="//do something if" else ="//do something else" 换行
  • 感谢您的回答。 @7urkm3n
  • 另外,这个应该可以工作:@variable1 = @object? ? @object1.element[0] : 'EMPTRY @object'

标签: ruby-on-rails coffeescript haml frontend hamlc


【解决方案1】:

?= 运算符在 CoffeeScript 中称为 existential operator

来自文档:

在 JavaScript 中检查变量是否存在有点困难。 if (variable) ... 接近,但因零、空字符串和 false 而失败。 CoffeeScript 的存在运算符 ?除非变量为 null 或未定义,否则返回 true,这类似于 Ruby 的 nil?

这意味着它的工作方式是,使用你的例子:

 @variable1 ?= @object1.element[0]

如果@variable1nullundefined,则将@object1.element[0] 分配给它。

如果我想为“else”添加条件呢?

@variable1 = 
  if @variable1?
    @object1.element[0]
  else
    # your else clause here

【讨论】:

  • 其实你也可以... = @variable1 ? @object1.element[0]
猜你喜欢
  • 2013-05-07
  • 2015-09-18
  • 2017-03-29
  • 2011-03-16
  • 2011-07-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多