attr_accessor para atributos de classe
|
|
É possível criar attr_accessors para atributos de classe? Por exemplo, para atributos de instância, o seguinte código: é equivalente a: Mas se para atributos de classe, eu preciso definir o get e set: É possível substituir o código acima por attr_accessor, de alguma forma? |
|
|
Cara, var de classe nunca vi. Mas fiz um método que faz isso sem usar method_missing, veja
Vamos usar agora
os métodos foram definidos na class
Atribuindo os valores
o mesmo vale pra bar
resolve? |
|
|
Perfeito, é exatamente o que eu queria. Obrigado. PS: alguém sabe dizer por que isso não existe por default no Ruby? |
|
|
Shairon, fiz um complemento ao seu código, criando os métodos attr_static_reader e attr_static_writer: |
|
|
por que isto equivale quase a definição de variáveis globais … e variáveis globais não são uma boa idéia :D |
|
|
Mais uma dúvida: porque criando os accessors desta forma o valor inicial do atributo não aparece? Ex: Já se eu definir os métodos manualmente: |
|
|
Respondendo minha própria dúvida: o valor deve ser definido depois do attr_static_{reader, writer, accessor}. Só não sei explicar porque… |
|
|
por causa desta linha de código: self.send(:class_variable_set, ”@@#{meth}”.to_sym,nil) |
|
|
só adicionar a condição |
|
|
Legal Shairon. Valeu mais uma vez pela ajuda. Fiz um “refactory” do código anterior, acrescentando essa condição: |

