On 6/5/06, Joao Pedrosa <[EMAIL PROTECTED]> wrote:
[corte]
>
> module Foo
>
>   @bar = "alguma coisa"
>   def Foo.bar
>     @bar
>   end
>
>   def Foo.bar= v
>     @bar = v
>   end
>
>  end
>
>
> Então, é assim que eu faço em Ruby, usando uma combinação
> de módulos e objetos para quase tudo.
>

Primeiramente, muito obrigado pelas suas respostas Joao <:o)

Vendo o seu exemplo eu fiquei um pouco confunso para implementar o que
eu realmente precisava. Eu gostaria de mapear algumas propriedades de
entradas LDAP para propriedades de  objetos, então fiz uma classe
LDAPEntry assim (note que a implementação é utilizando o comportamento
que eu pensava que havia com variáveis de classe):

class LDAPEntry
  @@LDAP_map = {  }
  def map_fields_from_entry(ldap_entry)
    for field, mapped in @@LDAP_map
      self.send("#{mapped}=", ldap_entry[field])
    end
    public :map_fields_from_entry
  end
end

Aí as classes apenas definiam quais deveriam ter seus valores mapeados
e seus accessors.

class AnyObject < LDAPEntry
  @@LDAP_map = {"userPassword" => "password" }
  attr_accesor :password
end

Então, com o código acima eu gostaria de saber:

- Como posso ter cada classe tendo um LDAP_map diferente, sem ter que
necessariamente definir em LDAPEntry#initialize e/ou accessors nas
classes "filhas"?
- self.send("#{mapped}=", algumacoisa) ficou muito feio, como eu
poderia fazer isso de maneira mais decente?

Muito obrigado pela atenção!
_______________________________________________
Ruby-l mailing list
[email protected]
http://www.listas.unicamp.br/mailman/listinfo/ruby-l

Responder a