2017-02-25 2 views
0

Ich habe viele Male versucht, dieses Problem zu lösen. Bitte hilf mir.Ruby Schuhe konvertieren in Hex-Code von ask_color

habe ich diesen Code:

Shoes.app do 
    button "Color" do 
    @giv_color=ask_color("Seleziona un colore") 
    def rgb(r, g, b) 
     "##{to_hex r}#{to_hex g}#{to_hex b}" 
    end 
    def to_hex(n) 
     n.to_s(16).rjust(2, '0').upcase 
    end 
    para @giv_color # => this give me a result in rgb of a selected color (es. rgb(20, 20, 40)) 
    para rgb(100, 200, 300) #=> this give me a correct hex color convetided 
    end 
end 

verstehe ich nicht, warum ich nicht den Wert rgb in Hex-Code automatisch konvertieren bin.

+0

Dieser Code wird nicht einmal ausgeführt, da ein "Ende" fehlt. Auch 'def rgb (r, g, b); end definiert eine leere Methode. Sind Sie sicher, dass Sie wissen, was das Problem ist? – Max

+0

Man das Problem ist nicht der Code, weil perfekt funktioniert, das Problem ist, dass ich @ giv_color nicht in Hex-Code konvertieren kann. Probieren Sie meinen Code vor dem Kommentar aus. – awar

+0

@awar liefert ein Beispiel für einen Wert für '@ giv_color' - was es zurückgibt und was es zurückgeben soll. Ich nehme an, der Benutzer wählt eine von einem Farbwähler aus? – OneNeptune

Antwort

0

Ich fand die Lösung nach mehreren Versuchen selbstständig. Ich merkte nicht, was ich von der Farbauswahl zurückbekam, war eine Zeichenkette, säuberte die letztere und konvertierte zu ganzzahligen Zahlen. Ich habe das Rätsel gelöst. Danke für Ihre Hilfe.

#!/usr/bin/ruby 
Shoes.app do 
    button "Color" do 
    @giv_color=ask_color("Seleziona un colore") 
    def rgb(r, g, b) 
     "#{to_hex r}#{to_hex g}#{to_hex b}" 
     end 
    def to_hex(n) 
     n.to_s(16).rjust(2, '0').upcase 
end 
    arr = @giv_color.inspect.tr('rgb()','').split(',') # clean string returned from selected color 
    a = arr[0].to_i #--| 
    b = arr[1].to_i # | ---- convert the string number on integer 
    c = arr[2].to_i #--| 

    hex = rgb(a, b, c) 
    para hex # <<--- return the hex code 
    end 

end