У меня есть класс с константой, определенной для него. Затем я определяю метод класса, который обращается к этой константе класса. Это прекрасно работает. Пример:(In Ruby), позволяющий методам смешанного класса получить доступ к константам класса
#! /usr/bin/env ruby
class NonInstantiableClass
Const = "hello, world!"
class << self
def shout_my_constant
puts Const.upcase
end
end
end
NonInstantiableClass.shout_my_constant
Моя проблема возникает при попытке переместить этот метод класса на внешний модуль, например, так:
#! /usr/bin/env ruby
module CommonMethods
def shout_my_constant
puts Const.upcase
end
end
class NonInstantiableClass
Const = "hello, world!"
class << self
include CommonMethods
end
end
NonInstantiableClass.shout_my_constant
Рубин интерпретирует метод как запрос константы из модуля, а не класс:
line 5:in `shout_my_constant': uninitialized constant CommonMethods::Const (NameError)
Итак, какие магические трюки вам нравятся, чтобы позволить методу получить доступ к константе класса? Большое спасибо.
Хорошо, это очищает вещи. Я еще не испытал синтаксис :: :). – jameshfisher
Не прекращайте читать прямо сейчас. Читайте ниже ответ johannes. – Sebastian