Diciamo che ho una classe Singleton come questo:Come aggiungere metodi della classe convenienza ad una classe Singleton in rubino
class Settings
include Singleton
def timeout
# lazy-load timeout from config file, or whatever
end
end
Ora, se voglio sapere cosa timeout da usare ho bisogno di scrivere qualcosa di simile:
Settings.instance.timeout
ma preferirei che accorciare a
Settings.timeout
Un modo ovvio per fare questo lavoro sarebbe quello di modificare l'Imple mentazione di impostazioni per:
class Settings
include Singleton
def self.timeout
instance.timeout
end
def timeout
# lazy-load timeout from config file, or whatever
end
end
che funziona, ma sarebbe piuttosto noioso scrivere manualmente un metodo di classe per ciascun metodo di istanza. Questo è rubino, ci deve essere un modo intelligente intelligente per farlo.
Impressionante risposta. Nel mio caso specifico, SingleForwardable è esattamente quello che stavo cercando. Grazie! –