J'ai un constructeur pour un programme d'objet qui valide un argument pour vous assurer qu'il est un entier:Ruby est-elle? problèmes
def initialize(programid,*other_args)
unless programid.is_a?(Integer) then
raise TypeError
end
@programid = programid
@name = other_args['name']
end
et quand je crée une nouvelle instance
my_prog = Program::new(13453)
Il me donne cette erreur:
can't convert String into Integer (TypeError)
qui ne devrait pas se passer parce que je ne suis pas essayer de faire une conversion. Des idées?
Votre code fonctionne pour moi. Y a-t-il quelque chose d'autre qui est appelé lorsque vous appelez Program: new? Que se passe-t-il si vous avez mis programid.class avant votre moins? – DanSingerman
Fonctionne bien pour moi aussi. Pouvez-vous poster un programme complet qui démontre l'erreur? – mikej
Il s'avère que c'est lié à la façon dont j'utilise * other_args. Je pensais que je pourrais l'utiliser comme un hachage, mais il semble que je ne peux pas @name = other_args ['name'] –