вызов частного метода split (Shoes :: EditLine): Shoes :: EditLine - PullRequest
1 голос
/ 28 августа 2009

Я пытаюсь написать простую программу, которая принимает значение rgb и меняет фон на этот цвет с помощью Shoes (Raisins revision 1134). Вот мой код:

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

Когда я запускаю его, я получаю эту ошибку: вызывается закрытый метод split (Shoes :: EditLine): Shoes :: EditLine. Почему это? Метод работает в ирб.

Ответы [ 2 ]

2 голосов
/ 28 августа 2009

Вы пытаетесь разделить объект EditLine, а не его текст. Вы можете получить его текст, используя метод text, например:

    def convert_to_num(value)
    # Splits string into numerical values
        value.text.split(',').map { |num| num.to_i }
    end
1 голос
/ 28 августа 2009

Полагаю, вы ожидаете, что value будет строкой. value, который вы передаете to_rgb, является Shoes::EditLine, а не строкой. Я знаю, что от просмотра сообщения об ошибке, а не от чтения кода. Ваш convert_to_num метод в порядке, вы просто не передаете тип объекта, который вам кажется.

Я раньше не программировал с Shoes, так что я не уверен, как решить проблему, но теперь вы знаете, по крайней мере, что ее вызывает.

...