9.5. Unikanie kolizji nazw dzięki ich kwalifikowaniu
Problem
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.
Rozwiązanie
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 ...
Get Ruby. Receptury now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.