Skip to content

Instantly share code, notes, and snippets.

@jonatas
Created May 6, 2010 14:54
Show Gist options
  • Save jonatas/392204 to your computer and use it in GitHub Desktop.
Save jonatas/392204 to your computer and use it in GitHub Desktop.
$objetos = {}
class Object
def objeto(nome)
$objeto = $objetos[nome] = Object.new
end
def method_missing(nome, *args, &block)
$objetos[nome.to_s] ||
$objeto.instance_variable_get("@#{nome}") ||
super
end
def possui(atributos)
atributos.each do |nome, valor|
$objeto.instance_variable_set("@#{nome}",valor)
end
end
def quando(acao, &block)
$objeto.class.send(:define_method, acao, &block)
end
def sortear(atributo)
atributo = $objeto.instance_variable_get("@#{atributo}")
p atributo[rand(atributo.size)]
end
end
objeto "moeda"
possui :faces => ["cara", "coroa"]
quando("jogar") {
sortear(:faces)
}
10.times { moeda.jogar }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment