gpt4 book ai didi

ruby - ruby 数组的最后一个元素是 nil

转载 作者:数据小太阳 更新时间:2023-10-29 08:35:11 25 4
gpt4 key购买 nike

我有一个简单的 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}")

打印到控制台的输出是输入的股票代码 ... ["aapl", nil]

为什么在这种情况下数组的最后一个元素 nil 以及摆脱它的正确方法是什么?

最佳答案

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

然后您使用 array.insert它添加而不是替换元素。你可以使用 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]

ruby 数组更像是其他语言中的列表。它支持push (虽然 << 是一种更常用的添加到数组的方法),pop ,以及其他类似列表的功能。

关于ruby - ruby 数组的最后一个元素是 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57368122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com