Last active
December 11, 2015 22:18
-
-
Save gbaptista/4668414 to your computer and use it in GitHub Desktop.
Métodos de classe, são métodos acessíveis sem a necessidade de instanciar a classe. Seriam os famosos “métodos estáticos”. O mesmo vale para variáveis.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# encoding: utf-8 | |
class ClassMethods | |
class << self | |
attr_accessor :class_var | |
end | |
def self.class_method | |
'class_method' | |
end | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# encoding: utf-8 | |
# Ajuda para os comentários e termos: | |
# http://blog.gbaptista.com/2013/01/29/comentarios-metodos-variaveis-classe-instancia/ | |
require 'test/unit' | |
require './class_methods' | |
class ClassMethodsTest < Test::Unit::TestCase | |
def test_class_methods | |
# Métodos [class public] são acessíveis sem precisar instanciar a classe. | |
assert_equal('class_method', ClassMethods.class_method) | |
# Variáveis [class public] são setáveis sem precisar instanciar a classe. | |
assert_equal('class_var', ClassMethods.class_var=('class_var')) | |
# Variáveis [class public] são acessíveis sem precisar instanciar a classe. | |
assert_equal('class_var', ClassMethods.class_var) | |
# Métodos [class public] não são acessíveis em uma instância da classe. | |
assert_match(/undefined method/, assert_raise(NoMethodError){ | |
ClassMethods.new.class_method | |
}.message) | |
# Variáveis [class public] não são setáveis em uma instância da classe. | |
assert_match(/undefined method/, assert_raise(NoMethodError){ | |
ClassMethods.new.class_var=('class_var') | |
}.message) | |
# Variáveis [class public] não são acessíveis em uma instância da classe. | |
assert_match(/undefined method/, assert_raise(NoMethodError){ | |
ClassMethods.new.class_var | |
}.message) | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment