我正在尝试根据用户输入定义一个数组,并希望确保每个值介于1和10之间。我该怎么做?
所以我现在正在使用它。
"start": "./node_modules/.bin/knex migrate:latest && node server.js"
我希望用户只输入1到10之间的值。我该怎么做?
答案 0 :(得分:1)
您可以使用以下内容来执行此操作:
def verify(input)
(1..10).to_a.include?(input)
end
#input is user input
if verify(input)
#do some stuff
else
#don't do stuff
end
答案 1 :(得分:0)
...所以你知道,gets.chomp
没有返回一个数组。它返回一个String。像这样的东西会给你你想要的数组:
array = gets.chomp.split(/\D/).map { |e| e.to_i }
将其从单个字符串(恰好包含,
- 分隔值)转换为数字数组。
puts 'The array you entered was invalid!' if array.any? { |item| !(1..10).include?(item) }
通过并检查any
的{{1}}值是否返回true,当且仅当范围!(1..10).include?(item)
(包括)包含[1,10]
时才返回true。如果是,则打印出item
。
但是,看起来你想要做的是物理上阻止用户在控制台中输入The array you entered was invalid!
或11
之类的数字,这在(至少在纯Ruby中)是不可能的。你能得到的最接近的是在事后验证输入,这就是它的作用。如果你想让他们继续进入数组直到他们输入的数组有效,请查看Ruby的各种循环。
请注意,@ locoboy的答案适用于单个数字,但在尝试验证整个数组或12
的直接结果时会失败。