Ruby on rails 你能解释一下';s做

Ruby on rails 你能解释一下';s做,ruby-on-rails,ruby,gem,Ruby On Rails,Ruby,Gem,可能重复: 我找到了!!在Paypal gem中: 像59 但我不明白它的作用 我知道!意思不是,但是!!没有道理 这是屏幕:它根据其“真实”性质强制将任何值设置为true或false 这仅仅是因为,正如您所指出的,是布尔not运算符。例如: t = 1 puts !t # => false puts !!t # => true f = nil puts !f # => true puts !!f # => false def try x if x == 1

可能重复:

我找到了!!在Paypal gem中: 像59

但我不明白它的作用

我知道!意思不是,但是!!没有道理


这是屏幕:

它根据其“真实”性质强制将任何值设置为
true
false

这仅仅是因为,正如您所指出的,
是布尔not运算符。例如:

t = 1
puts !t  # => false
puts !!t # => true
f = nil
puts !f  # => true
puts !!f # => false
def try x
  if x == 1
    return nil
  else
    return "non-nil"
  end
end

p "try1" if try(1) # here you get a string printed
p "try2" if !!try(1) # here you don't

这将强制结果为真或假。在ruby中,nil并不是完全错误的,这可能很有用。例如:

t = 1
puts !t  # => false
puts !!t # => true
f = nil
puts !f  # => true
puts !!f # => false
def try x
  if x == 1
    return nil
  else
    return "non-nil"
  end
end

p "try1" if try(1) # here you get a string printed
p "try2" if !!try(1) # here you don't

它用于确保其为布尔类型

例如:

!!积极的 =>正确

活动=错误 =>错误

!!积极的 =>错误

活动=零 =>零

!!积极的 =>错误


用于在返回任何内容的内容上返回
true
false

在Ruby中,除了
nil
false
之外的所有内容都被解释为
true
。但它不会返回true,而是返回值。 所以如果你使用
,您会得到
true
false
,但实际值正好相反。 如果您使用
,您将获得相应的
true
false
值。

如果您知道
!(foo)
意味着你应该能够计算出
是什么!(!(foo))
意思是:)这不是一个不同的运算符,只是两次应用了同一个运算符。你可以用谷歌搜索“ruby double bang”