Skip to content

Instantly share code, notes, and snippets.

@gbaptista
Last active December 11, 2015 22:18
Show Gist options
  • Save gbaptista/4668533 to your computer and use it in GitHub Desktop.
Save gbaptista/4668533 to your computer and use it in GitHub Desktop.
Métodos de instância, são métodos acessíveis apenas por instâncias da classe. O mesmo vale para variáveis.
# encoding: utf-8
class InstanceMethods
attr_accessor :instance_var
def demo_instance_method
'instance_method'
end
end
# 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 './instance_methods'
class InstanceMethodsTest < Test::Unit::TestCase
def test_instance_methods
# Criando uma instância da classe.
instance_methods = InstanceMethods.new
# Métodos [instance public] são acessíveis por uma instância da classe.
assert_equal('instance_method', instance_methods.demo_instance_method)
# Variáveis [instance public] são setáveis por uma instância da classe.
assert_equal('instance_var', instance_methods.instance_var=('instance_var'))
# Variáveis [instance public] são acessíveis por uma instância da classe.
assert_equal('instance_var', instance_methods.instance_var)
# Métodos [instance public] não são acessíveis diretamente sem instanciar a classe.
assert_match(/undefined method/, assert_raise(NoMethodError){
InstanceMethods.demo_instance_method
}.message)
# Variáveis [instance public] não são setáveis diretamente sem instanciar a classe.
assert_match(/undefined method/, assert_raise(NoMethodError){
InstanceMethods.instance_var=('instance_var')
}.message)
# Variáveis [instance public] não são acessíveis diretamente sem instanciar a classe.
assert_match(/undefined method/, assert_raise(NoMethodError){
InstanceMethods.instance_var
}.message)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment