1

我正在尝试编写一个简单的程序,该程序采用 rgb 值并使用鞋子(Raisins 修订版 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。为什么是这样?该方法适用于 irb。

4

2 回答 2

2

您正在尝试拆分 EditLine 对象,而不是其文本。您可以使用该方法获取其文本text,如下所示:

    def convert_to_num(value)
    # Splits string into numerical values
        value.text.split(',').map { |num| num.to_i }
    end
于 2009-08-28T15:12:51.010 回答
1

我假设您希望value成为一个字符串。value你传递给的to_rgb是一个Shoes::EditLine,而不是一个字符串。我从看到错误消息而不是从阅读代码中知道这一点。您的convert_to_num方法很好,您只是没有将您认为的对象类型传递给它。

我以前没有用 Shoes 编程,所以我不确定如何解决这个问题,但现在你至少知道是什么原因造成的了。

于 2009-08-28T07:30:03.190 回答