Arrays 在Ruby中将用户输入转换为数组中的整数?
我希望用户的输入变成一个整数,它是新数组中的[0]索引,我希望以后添加更多项。有没有一种方法可以将用户的输入转换成一个数组,而不用将其转换成整数并按下?这是我当前的代码: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。作为
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
)。您可以将代码缩短为guesssguesss=[gets.to_i]
也许。您可以指定方法链的结果(见下文),但通常可读性胜过聪明。YMMV@sagarpandya82按您建议的方式分配文本将起作用,但使用内核#整数比字符串#to#i更安全。因此,guesses=[Integer(gets)]
可能是更好的选择,如果您只是在寻找保证单元素数组的最短代码,并且希望避免链接方法。而不仅仅是guesses=[Integer(gets)]
?@CarySwoveland,如果您愿意,您可以这样做。但为什么你认为这更明确或更可读?
print 'Enter integer: '
guesses = [] << gets.to_i
#=> [0]