运营商是什么意思?=意味着什么?

时间:2016-04-04 05:16:57

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

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

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

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

我找不到有关hamlc的任何信息。另外,如果我理解的是正确的,如果我想添加else条件怎么办?

1 个答案:

答案 0 :(得分:2)

?=运算符在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