红宝石数组的最后一个元素为nil

阿什什·阿加瓦尔(Ashish Agarwal)

到目前为止,我有一个简单的ruby程序,该程序有2个步骤:1.向用户询问他们要跟踪的股票代码的数量。2.请求用户输入这些符号

puts("How many stocks do you want to track ?")
numStocks = gets.chomp()
puts("Please enter #{numStocks} stock symbols: ")

array = Array.new(numStocks.to_i)
for i in 1..numStocks.to_i do 
    array.insert(i-1, gets.chomp())
end

puts("Stock symbols entered ... #{array}")

打印到控制台上的输出是 Stock symbols entered ... ["aapl", nil]

nil在这种情况下,为什么数组的最后一个元素是什么呢?

内特

Array.new创建一个新数组,并用您指定的元素数量填充它。Array.new(3)与相同[nil, nil, nil]Array.new(2, 'a')与相同['a', 'a']

然后array.insert您可以使用which添加而不是替换元素。您可以array[i-1] = gets.chomp()用来设置值,但实际上根本没有理由以这种方式初始化数组。

编写这一切的“更多Ruby”方法是:

puts 'How many stocks do you want to track ?'
num_stocks = gets.chomp
puts "Please enter #{num_stocks} stock symbols: "

array = 1.upto(num_stocks.to_i).map do
  gets.chomp
end

puts "Stock symbols entered ... #{array}"

编辑:另外,值得一提的是,在Ruby中,数组不是固定大小的。您可以根据需要添加和删除元素。如果我不得不猜测,您已经习惯了C之类的语言,您必须先定义数组的大小,然后再永久定义它的大小(这就是我想您正在尝试做的事情)。

另外,在Ruby中,使用并不是很常见Array.new大多数时候,人们只是通过键入数组文字来定义数组。

array = [1,2,3]

红宝石数组更像其他语言中的列表。它支持push(尽管<<是添加到数组的更常见方法)pop,和其他类似列表的功能。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章