2009-08-28 4 views
1

Ich versuche, ein einfaches Programm zu schreiben, das einen RGB-Wert nimmt und den Hintergrund dieser Farbe mit Shoes (Rosinen Revision 1134) ändert. Hier ist mein Code:private Methode 'Split' genannt für (Schuhe :: EditLine): Schuhe :: 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 

Wenn ich es laufen, bekomme ich diese Fehlermeldung: private Methode 'split' genannt für (Schuhe :: editline): Schuhe :: editline. Warum ist das? Die Methode funktioniert in irb.

Antwort

1

Ich nehme an, Sie erwarten value, um eine Zeichenfolge zu sein. Die value übergeben Sie an to_rgb ist ein Shoes::EditLine, und keine Zeichenfolge. Ich weiß das, weil ich die Fehlermeldung gesehen habe und nicht den Code gelesen habe. Ihre convert_to_num Methode ist in Ordnung, Sie übergeben nur nicht die Art von Objekt, von dem Sie denken, dass Sie es sind.

Ich habe noch nicht mit Shoes programmiert, also bin ich mir nicht sicher, wie ich das Problem lösen soll, aber jetzt wissen Sie, was es zumindest verursacht.

2

Sie versuchen, das EditLine-Objekt und nicht seinen Text zu teilen. Sie können seinen Text mit der text Methode wie folgt erhalten:

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