2016-03-28 4 views
2

Comment faire pour que la méthode suivante some_protected soit protégée ou privée? Il devrait être implémenté sans héritage.Comment faire une méthode singleton protégée

module Sample 
    def self.some_public 
    some_protected 
    end 

    protected 

    def self.some_protected 
    puts 'Bingo!' 
    end 
end 

Sample::some_public  # Bingo! 
Sample::some_protected # Bingo! (but expected an error that method is not accessible) 
+0

Pourquoi voudriez-vous avoir cette méthode _protected_? Cela n'a pas beaucoup de sens pour moi quand je travaille avec des méthodes de classe. –

+0

Peut-être. Qu'est-ce que vous pensez exactement pourrait être faux? – Kirby

+0

Qu'est-ce que vous voulez réaliser? –

Répondre

2

Travailler dans la classe singleton est probablement le plus simple.

module Sample; end 

class <<Sample 
    def some_public 
    some_protected 
    end 
    protected def some_protected 
    puts 'Bingo!' 
    end 
end 
+0

Ouais, semble que c'est ce dont j'ai besoin. – Kirby