Обувь из рубина конвертируется в шестнадцатеричный код

Я много раз пытался решить эту проблему. Пожалуйста, помогите мне.

Я создал этот код:

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

Я не понимаю, почему я не конвертирую значение rgb в шестнадцатеричный код автоматически.

2 ответа

Решение

Я нашел решение самостоятельно после нескольких попыток. Я не понял, что я возвращал из выбора цвета, был строкой, очистить последнюю и преобразовать в целые числа, которые я решил загадку. Спасибо за вашу помощь.

#!/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 

Это простой способ преобразовать массив чисел (например, [123, 22, 0]) в его шестнадцатеричный цветовой код (#7b1600).

      def rgb array
  "#%02x%02x%02x" % array
end
Другие вопросы по тегам