Esiste un modo semplice per elencare gli accessor/lettori che sono stati impostati in una Ruby Class?Inizializza una classe Ruby da un hash arbitrario, ma solo le chiavi con gli accessor corrispondenti
class Test
attr_reader :one, :two
def initialize
# Do something
end
def three
end
end
Test.new
=> [one,two]
Quello che sto davvero cercando di fare è quello di permettere l'inizializzazione di accettare un hash con qualsiasi numero di attributi in, ma impegnarsi solo quelli che hanno i lettori già definiti. Qualcosa di simile:
def initialize(opts)
opts.delete_if{|opt,val| not the_list_of_readers.include?(opt)}.each do |opt,val|
eval("@#{opt} = \"#{val}\"")
end
end
Altri suggerimenti?
Aggiornato per utilizzare l'array # concat anziché l'array # << per creare array flat. – tadman
Ottima idea! Terrò questo in una libreria da qualche parte, sono sicuro che sarà molto utile! –