2009-08-28 7 views
1

J'essaie d'écrire un programme simple qui prend une valeur rgb et change l'arrière-plan de cette couleur en utilisant Shoes (Raisins révision 1134). Voici mon code:méthode privée 'split' appelée pour (Shoes :: EditLine): Shoes :: EditLine

Shoes.app :title => "Show a Color" do 

    def convert_to_num(value) 
    # Splits string into numerical values 
     value.split(',').map { |num| num.to_i } 
    end 

    def to_rgb(value) 
     red, green, blue = convert_to_num(value) 
     rgb(red, green, blue) 
    end 

    stack :height => 500, :width => 500 do 
     value = edit_line 
     button "Change color!" do 
      background to_rgb(value) 
     end 
    end 

end 

Quand je cours, je reçois cette erreur: méthode privée 'scission' appelé (Chaussures :: editline): Chaussures :: editline. Pourquoi est-ce? La méthode fonctionne en irb.

Répondre

1

Je suppose que vous vous attendez à value être une chaîne. Le value vous passez à to_rgb est un Shoes::EditLine, et pas une chaîne. Je le sais en voyant le message d'erreur, pas en lisant le code. Votre méthode convert_to_num est très bien, vous ne passez pas le type d'objet que vous pensez que vous êtes.

Je n'ai pas programmé avec Shoes auparavant, donc je ne sais pas comment résoudre le problème, mais maintenant vous savez ce qui en est la cause au moins.

2

Vous essayez de diviser sur l'objet EditLine, pas son texte. Vous pouvez obtenir son texte en utilisant la méthode text, comme ceci:

def convert_to_num(value) 
    # Splits string into numerical values 
     value.text.split(',').map { |num| num.to_i } 
    end 
Questions connexes