def myRange
this_range = [0..3]
return this_range
end
puts myRange
puts rand(myRange)
Mac:Postazure$ ruby TESTER.rb 0..3 TESTER.rb:7:in `rand': no implicit conversion of Array into Integer (TypeError) from TESTER.rb:7:in `<main>'
返回“0..3”范围,但不能像上面那样使用。我有什么想法可以让它起作用吗?
答案 0 :(得分:3)
[0..3]
没有返回Range
。它返回一个带有一个Range元素的Array
。
2.1.1 :001 > [0..3].class
=> Array
要返回范围,请将代码更改为
def myRange
this_range = 0..3
return this_range
end
myRange.class
=> Range
甚至更好
def my_range
0..3
end
然后你可以打电话
puts rand(myRange)
编码风格笔记:
答案 1 :(得分:1)
是的,因为您使用的是数组而不是范围。
尝试这样的事情:
def myRange
this_range = 0..3
return this_range
end
puts myRange
puts rand(myRange)
答案 2 :(得分:0)
请改为(1..3)
而不是[1..3]
并且它应该有效:)
def myRange
this_range = (0..3)
return this_range
end
puts rand(myRange)
#==> 2