Что !! и еще несколько вещей в Ruby? - PullRequest
3 голосов
/ 04 октября 2010

Я копался в каком-то рубиновом гем-коде и наткнулся на них, и не уверен, что они означают

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 ]

6 голосов
/ 04 октября 2010

!! - это «приведение к логическому значению». ! отрицает значение, !! отрицает отрицательное значение. Следовательно, !! превращает любое значение в логическое значение.

> 5
=> 5
> !5
=> false
> !!5
=> true
> !!5 == true
=> true
3 голосов
/ 04 октября 2010

Какие части конкретно вы не понимаете во второй части кода?

Методы success? и failure? в первом фрагменте возвращают логические значения (true / false) относительно атрибута экземпляра @success.

cattr_accessor создает атрибут класса чтения / записи с именем test_response

Вот еще немного информации, которая также объясняется лучше: http://apidock.com/rails/Class/cattr_accessor

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...