获取用户输入后数组中每个元素的输出 class,Ruby
Output class of each element in array after getting user input, Ruby
我有一个小程序接受用户输入的由空格分隔的多个整数,例如:4 5 6 7
然后我将它推入一个数组,并希望找到数组中每个元素的 class,我希望它是一个字符串,因为我正在使用 gets 命令。我正在使用 .each 迭代器来执行此操作,但是在下面的代码中,当我 puts output.class
我得到一个数组输出而不是四个字符串输出。
有人能指出我做错了什么吗?
values = []
puts "enter segment values separated by spaces: "
entry = gets.split
values << entry
values.each do |output|
puts output.class
end
entry
是一个数组,因此,values
数组只包含一个恰好是 entry
数组的元素。
要解决此问题,您可以将 values << entry
替换为:
values.push *entry
说明
Array#<<
方法将单个对象压入数组。在您的情况下,您正在推送 entry
数组,因此,它被作为单个元素推送。
如果你想压入 entry
数组的每个单独元素,那么,使用 splat 运算符 (*
) 将允许我们将数组转换为方法的多个参数。不幸的是,<<
接受单个参数,如果我们这样做会出错:
values << *entry
#=> main.rb:5: syntax error, unexpected *
# values << *entry
^
还有另一种方法,Array#push
,可以传递可变数量的对象并将每个对象推入数组。因此,最终代码将如下所示:
values.push *entry
我有一个小程序接受用户输入的由空格分隔的多个整数,例如:4 5 6 7
然后我将它推入一个数组,并希望找到数组中每个元素的 class,我希望它是一个字符串,因为我正在使用 gets 命令。我正在使用 .each 迭代器来执行此操作,但是在下面的代码中,当我 puts output.class
我得到一个数组输出而不是四个字符串输出。
有人能指出我做错了什么吗?
values = []
puts "enter segment values separated by spaces: "
entry = gets.split
values << entry
values.each do |output|
puts output.class
end
entry
是一个数组,因此,values
数组只包含一个恰好是 entry
数组的元素。
要解决此问题,您可以将 values << entry
替换为:
values.push *entry
说明
Array#<<
方法将单个对象压入数组。在您的情况下,您正在推送 entry
数组,因此,它被作为单个元素推送。
如果你想压入 entry
数组的每个单独元素,那么,使用 splat 运算符 (*
) 将允许我们将数组转换为方法的多个参数。不幸的是,<<
接受单个参数,如果我们这样做会出错:
values << *entry
#=> main.rb:5: syntax error, unexpected *
# values << *entry
^
还有另一种方法,Array#push
,可以传递可变数量的对象并将每个对象推入数组。因此,最终代码将如下所示:
values.push *entry