我是鞋子的新手,我正在尝试创建一个简单的骰子滚轮,允许用户通过输入侧面数量来选择自定义尺寸的模具。我的代码如下:
Shoes.app :width => 500, :height => 300 do
flow do
para "Sides: "
@sides = edit_line
end
flow do
button "Roll!" do
@total = 1 + rand(sides)
alert @total
end
end
end
我在编辑行输入一个数字,单击按钮,没有任何反应。
如果我用@total = rand(sides)
替换@total = rand(20)
,程序执行得很好,但当然只生成1-20的随机数。
我尝试了像rand(@sides)
这样的变体,但无济于事。
我在简单的Ruby中设计了一个类似的程序,它使用rand(sides)
没有问题,但如果我尝试在Shoes中执行它,它什么都不做。
答案 0 :(得分:1)
你有几个错误。首先,使用@sides
,而不是sides
。这样,您就引用了之前设置的相同变量。
其次,@sides
的类型为Shoes::EditLine
。哪个好,因为你需要动态查找文本。如果您需要@sides
的文字,请拨打@sides.text
,其中会返回String
。当然,在这种情况下,您需要将其转换为适合输入rand
的整数,因此您将使用@sides.text.to_i
。
(当然,标准的不信任用户警告适用。实际上,您需要检查输入的无效输入并做一些有用的事情。)
长话短说,用@total = 1 + rand(sides)
替换@total = 1 + rand(@sides.text.to_i)
,你会很好。
答案 1 :(得分:0)
edit_line
返回一个String对象。您需要先使用@sides = edit_line.to_i