2017-02-25 2 views
0

私はこの問題を解決するために何度も試みました。私を助けてください。私は自動的に16進コードの値RGBを変換するわけではない理由を私は理解していないよルビーの靴はask_colorから16進コードに変換されます

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 

私はこのコードを作成しました。

+0

このコードは 'end'がないため実行されません。また、 'def rgb(r、g、b); end'は空のメソッドを定義します。あなたは問題が何であるかを知っていますか? – Max

+0

問題は完全に動作するため、問題はコードではありません。問題は16進コードで@giv_colorを変換できないことです。コメントの前に自分のコードを試してください。 – awar

+0

@awar '@ giv_color'の値の例を返します。返すものと返すものです。私は、ユーザーがカラーピッカーからaを選択すると推測していますか? – OneNeptune

答えて

0

私はいくつかの試みの後にそれ自身で解決策を見つけました。私は色の選択から戻ってきたものが文字列であり、後者をきれいにして整数に変換したことに気付かず、私は謎を解決しました。ご協力いただきありがとうございます。

#!/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 
関連する問題