是什么 !!和Ruby中的其他一些东西?

时间:2010-10-04 01:35:41

标签: ruby-on-rails ruby rubygems

我一直在挖掘一些红宝石宝石代码,我遇到了这些并且不确定它们是什么意思

def success?
  !!@success
end

def failure?
  !@success
end

cattr_accessor :test_response

最后是这段代码

class_inheritable_accessor :attributes
self.attributes = []

def self.attribute(name, options={})
  top_level_name = name.to_s.split(".").last.underscore
  define_method top_level_name do
    read_attribute name
  end

如果你只知道一两个那么好......我只想了解它们......谢谢

2 个答案:

答案 0 :(得分:6)

!!是“强制转换为布尔值”。 !否定一个值,!!否定了否定的值。因此!!将任何值转换为布尔值。

> 5
=> 5
> !5
=> false
> !!5
=> true
> !!5 == true
=> true

答案 1 :(得分:3)

您在代码的第二部分中没有明白哪些部分?

第一个代码段中的方法success?failure?返回与@success实例属性相关的布尔值(true / false)。

cattr_accessor创建一个名为test_response

的读/写类属性

以下是更多信息,也可以更好地解释:http://apidock.com/rails/Class/cattr_accessor