Ruby同时读取2个整数

Ruby同时读取2个整数,ruby,Ruby,我想同时读取STDIN中一行中的两个整数。 我尝试过这样的模式匹配: [a, b] = gets.split.map(&:to_i) 然而,这失败了: solution.rb:7: syntax error, unexpected '=', expecting keyword_end [a, b] = gets.split.map(&:to_i) 如何从同一行读取两个整数(最好但不一定同时读取)?您需要删除左侧的括号: a, b = gets.split.map(&a

我想同时读取
STDIN
中一行中的两个整数。 我尝试过这样的模式匹配:

[a, b] = gets.split.map(&:to_i)
然而,这失败了:

solution.rb:7: syntax error, unexpected '=', expecting keyword_end
    [a, b] = gets.split.map(&:to_i)

如何从同一行读取两个整数(最好但不一定同时读取)?

您需要删除左侧的括号:

a, b = gets.split.map(&:to_i)

使用splat运算符最好是安全的

a, b, * = gets.split.map(&:to_i)

关于splat运营商的更多信息,我在

上写了一篇博客,顺便说一句,这不是模式匹配。为什么不呢
gets.split.map(&:to_i)
返回一个数组,然后在结果中匹配
a
b
。这不是模式匹配吗?@octavian这是Ruby,不是:-)OP希望
b
是整数,而不是数组。如果您担心原始行上可能有两个以上的数字,那么您应该执行
a,b,*=…
@sawa谢谢您让我更正。我想现在好了。