`![var_name]` 在 Ruby 中是什么意思?
what does `![var_name]` mean in Ruby?
我正在处理别人的代码库,我正在尝试破译以下行:
if !foo #<~ this line
...
end
我注意到 foo
应该是 return false
,但是随着一声巨响!方法 returns true
。这是否意味着此 ![var]
业务类似于说:
if foo != nil
意思是"if not foo",实际上returns与foo
相反。所以如果 foo = true
, !foo
returns false
, 如果 foo = false
, !foo
returns true
.
是的,上面的代码表示如果条件 (foo) 为假,则 运行 代码。我不会说它类似于 foo != nil,它更像是 !(foo)
,其中 foo 可以是 nil
或 false
.
你可以写
if !foo #<~ this line
...
end
作为
unless foo
...
end
但根据 Ruby 风格指南,您应该使用 unless
,前提是代码可以在一行中表示。
do_something unless foo
在这种情况下!否定它后面的值。在 Ruby 中,只有 false
和 nil
被认为是假值,换句话说,在 if
等条件语句中将被视为 false
的值。所有其他值(true
、1
、"some-string"
等)都被认为是真实的(在条件中将被视为 true
的值)。
所以!false
,是true
。 !nil
是 true
。 !true
是 false
。
!foo
是
的语法糖
foo.!
即将消息 !
发送到通过计算表达式 foo
.
返回的对象
方法 !
在 BasicObject
中定义,它是 documented just like any other method,即使相当简洁:
!obj
→ true
or false
Boolean negate.
我正在处理别人的代码库,我正在尝试破译以下行:
if !foo #<~ this line
...
end
我注意到 foo
应该是 return false
,但是随着一声巨响!方法 returns true
。这是否意味着此 ![var]
业务类似于说:
if foo != nil
意思是"if not foo",实际上returns与foo
相反。所以如果 foo = true
, !foo
returns false
, 如果 foo = false
, !foo
returns true
.
是的,上面的代码表示如果条件 (foo) 为假,则 运行 代码。我不会说它类似于 foo != nil,它更像是 !(foo)
,其中 foo 可以是 nil
或 false
.
你可以写
if !foo #<~ this line
...
end
作为
unless foo
...
end
但根据 Ruby 风格指南,您应该使用 unless
,前提是代码可以在一行中表示。
do_something unless foo
在这种情况下!否定它后面的值。在 Ruby 中,只有 false
和 nil
被认为是假值,换句话说,在 if
等条件语句中将被视为 false
的值。所有其他值(true
、1
、"some-string"
等)都被认为是真实的(在条件中将被视为 true
的值)。
所以!false
,是true
。 !nil
是 true
。 !true
是 false
。
!foo
是
的语法糖foo.!
即将消息 !
发送到通过计算表达式 foo
.
方法 !
在 BasicObject
中定义,它是 documented just like any other method,即使相当简洁:
!obj
→true
orfalse
Boolean negate.