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
Arrays 在Ruby中将用户输入转换为数组中的整数?_Arrays_Ruby_Methods_Refactoring - Fatal编程技术网

Arrays 在Ruby中将用户输入转换为数组中的整数?

Arrays 在Ruby中将用户输入转换为数组中的整数?,arrays,ruby,methods,refactoring,Arrays,Ruby,Methods,Refactoring,我希望用户的输入变成一个整数,它是新数组中的[0]索引,我希望以后添加更多项。有没有一种方法可以将用户的输入转换成一个数组,而不用将其转换成整数并按下?这是我当前的代码: guesses = [] puts "Guess what number I'm thinking of. It's between 1 and #{solution_range}" guess = gets.to_i guesses.push(guess) 严格铸造 您必须将输入转换为整数,因为总是返回字符串或nil。作为

我希望用户的输入变成一个整数,它是新数组中的[0]索引,我希望以后添加更多项。有没有一种方法可以将用户的输入转换成一个数组,而不用将其转换成整数并按下?这是我当前的代码:

guesses = []
puts "Guess what number I'm thinking of. It's between 1 and #{solution_range}"
guess = gets.to_i
guesses.push(guess)
严格铸造 您必须将输入转换为整数,因为总是返回字符串或nil。作为一个单行程序,一种方法是为变量分配一个空哈希,然后将强制转换附加到哈希。这可能比您当前的方法快,但我实际上还没有对其进行基准测试

例如,如果在提示下输入
1
,您将得到:

print 'Enter integer: '
guesses = [] << Integer(gets)
#=> [1]

因为字符串#to#i比内核#整数更容易转换,所以任何非整数响应(包括nil)都将转换为
0
。有时这可能是您想要的,但对于您发布的用例来说,这不太可能是您想要的。

如果您希望它是一个整数,您必须将其转换为整数(
get
将返回
String
)。您可以将代码缩短为
guesss
guesss=[gets.to_i]
也许。您可以指定方法链的结果(见下文),但通常可读性胜过聪明。YMMV@sagarpandya82按您建议的方式分配文本将起作用,但使用内核#整数比字符串#to#i更安全。因此,
guesses=[Integer(gets)]
可能是更好的选择,如果您只是在寻找保证单元素数组的最短代码,并且希望避免链接方法。而不仅仅是
guesses=[Integer(gets)]
?@CarySwoveland,如果您愿意,您可以这样做。但为什么你认为这更明确或更可读?
print 'Enter integer: '
guesses = [] << gets.to_i
#=> [0]