(Ruby, направляющие) Контекст САМ в модулях и библиотеках …?

Посмотрите на контроллер управления системой. У меня под рукой нет MBP, но я считаю, что вам нужно взглянуть на smc.h

28
задан Brian Tompsett - 汤莱恩 31 May 2015 в 16:35
поделиться

2 ответа

В module:

Когда вы видите self в методе экземпляра, это относится к экземпляру класса, в который включен модуль.

Когда вы видите self вне метода экземпляра, это относится к модулю.

module Foo
  def a
    puts "a: I am a #{self.class.name}"
  end

  def Foo.b
    puts "b: I am a #{self.class.name}"
  end

  def self.c
    puts "c: I am a #{self.class.name}"
  end
end

class Bar
  include Foo

  def try_it
    a
    Foo.b # Bar.b undefined
    Foo.c # Bar.c undefined
  end
end

Bar.new.try_it
#>> a: I am a Bar
#>> b: I am a Module
#>> c: I am a Module
47
ответ дан 28 November 2019 в 03:20
поделиться

Вкратце ... http://paulbarry.com/articles/2008/04/17/the-rules-of-ruby-self

self также используется для добавления методов класса (или статических методов для пользователей C # / Java). Следующий фрагмент добавляет метод do_something к объекту текущего класса (статический) ...

class MyClass
    def self.do_something   # class method
       # something
    end
    def do_something_else   # instance method
    end
end
0
ответ дан 28 November 2019 в 03:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: