November 2012
Intermediate to advanced
888 pages
54h 46m
Polish
Chcemy stworzyć moduł lub klasę o nazwie identycznej z istniejącą już klasą lub modułem. Chcemy także uniknąć kolizji nazw naszej klasy (modułu) z klasami (modułami) definiowanymi w przyszłości.
Należy odwoływać się do nazw w sposób kwalifikowany, czyli z jawnym wskazaniem przestrzeni, z której pochodzą.
W poniższym przykładzie definiowany jest moduł związany z fizyczną teorią superstrun (superstrings), zawierający wewnątrz definicję klasy String niemającej nic wspólnego z klasą String ze standardowej biblioteki języka Ruby:
module StringTheory class String def initialize(length=10**-33) @length = length end end end String.new # => "" StringTheory::String.new ...