ruby-on-rails - 是什么 !!和 Ruby 中的其他一些东西?

标签 ruby-on-rails ruby rubygems

我一直在研究一些 ruby​​ gem 代码,我遇到了这些但不确定它们是什么意思

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

如果你只知道一两个也没关系...我只想了解它们...谢谢

最佳答案

!! 是“转换为 bool 值”。 ! 取反一个值,!! 取反被取反的值。因此 !! 将任何值转换为 bool 值。

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

关于ruby-on-rails - 是什么 !!和 Ruby 中的其他一些东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3852328/

相关文章:

ruby - Emacs shell 找不到 ruby​​ gems——例如,找不到 RubyGem haml (>= 0) (Gem::LoadError)

javascript - 如何使用 Ajax 调用在 application.js 中正确执行 jquery 请求

javascript - Minitest 的 assert_select 的 capybara 等价物是什么?

ruby-on-rails - 如何生成用于单元测试的临时文件?

ruby-on-rails - 在 `decode64' : undefined method `unpack1' for nil:NilClass (NoMethodError)

ruby - 无法在 OSX 上安装 gem mysql

ruby-on-rails - 如何使用 :path and :branch 添加 gem 依赖

ruby-on-rails - 是否可以将 gem Unread 与 gem Public Activity 一起使用?

ruby-on-rails - 在 Rails 5.1 及更高版本中使用什么代替 `render :text` (和 `render nothing: true` )?

ruby - 与 block 一起使用时,ruby Hash#merge 的行为是什么