Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 为什么兰德(变量)停止我的鞋计划';什么是死刑?_Ruby_Shoes - Fatal编程技术网

Ruby 为什么兰德(变量)停止我的鞋计划';什么是死刑?

Ruby 为什么兰德(变量)停止我的鞋计划';什么是死刑?,ruby,shoes,Ruby,Shoes,我是全新的鞋,并试图创建一个简单的骰子辊,允许用户选择一个自定义大小的模具,通过输入边数。我的代码如下: 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

我是全新的鞋,并试图创建一个简单的骰子辊,允许用户选择一个自定义大小的模具,通过输入边数。我的代码如下:

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)
,没有问题,但是如果我试着穿着鞋子去做,它什么也做不了

edit\u line
返回字符串对象。您需要首先使用
@sides=edit\u line将其转换为整数。要转换为整数,您有几个错误。首先,使用
@sides
,而不是
sides
。这样,您就引用了前面设置的同一个变量

其次,
@sides
的类型是
Shoes::EditLine
。这很好,因为您需要动态查找文本。如果需要
@sides
的文本,请调用
@sides.text
,它将返回一个
字符串。当然,在此上下文中,您需要将其转换为适合输入到
rand
的整数,因此您将使用
@sides.text.to_i

(当然,标准的不信任用户警告也适用。实际上,您需要检查输入是否无效,并做一些有用的事情。)


长话短说,将
@total=1+rand(sides)
替换为
@total=1+rand(@sides.text.to_i)
,你会很好。

+1代表@AShelly:
@total=1+rand(sides)
应该是
@total=1+rand(@sides)