J'utilise mon projet MOO pour m'enseigner Test Driven Design, et ça me prend des endroits intéressants. Par exemple, je l'ai écrit un test qui a un attribut sur un objet particulier doit toujours retourner un tableau, donc -La meilleure façon de faire un attribut toujours un tableau?
t = Thing.new("test")
p t.names #-> ["test"]
t.names = nil
p t.names #-> []
Le code que j'ai pour cela est correct, mais il ne semble pas terriblement rubis me :
class Thing
def initialize(names)
self.names = names
end
def names=(n)
n = [] if n.nil?
n = [n] unless n.instance_of?(Array)
@names = n
end
attr_reader :names
end
Existe-t-il un moyen plus élégant, Ruby-ish de faire cela?
(NB: si quelqu'un veut me dire pourquoi ceci est un test stupide pour écrire, ce serait intéressant aussi ...)
J'ai obtenu trois bonnes réponses. Merci tout le monde. – Shadowfirebird
Que se passe-t-il si l'argument est convertible en tableau? Voir ma réponse pour plus de détails ... –