Mam klasę ze stałą zdefiniowaną dla niej. Następnie mam zdefiniowaną metodę klasy, która uzyskuje dostęp do tej stałej klasy. To działa dobrze. Przykład:(W języku Ruby), zezwalając na stosowanie metod klasy mieszanej w celu uzyskania stałych klas
#! /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
Mój problem pojawia się przy próbie przenieść tę metodę klasy się do modułu zewnętrznego, tak jak poniżej:
#! /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
Ruby interpretuje sposób jak żądania stały z modułu, zamiast klasa:
line 5:in `shout_my_constant': uninitialized constant CommonMethods::Const (NameError)
Jakie magiczne sztuczki powinniście mieć, aby metoda uzyskała dostęp do stałej klasy? Wielkie dzięki.
Cóż, to rozwiązuje problem. Musiałem jeszcze doświadczyć składni :: :). – jameshfisher
Nie przestawaj już czytać. Przeczytaj poniżej odpowiedź johannes. – Sebastian