有没有办法在 Ruby 中动态创建数组?例如,假设我想遍历用户输入的书籍数组:
books = gets.chomp
用户输入:
"The Great Gatsby, Crime and Punishment, Dracula, Fahrenheit 451,
Pride and Prejudice, Sense and Sensibility, Slaughterhouse-Five,
The Adventures of Huckleberry Finn"
我把它变成一个数组:
books_array = books.split(", ")
现在,对于用户输入的每一本书,我想用 Ruby 创建一个数组。伪代码来做到这一点:
x = 0
books_array.count.times do
x += 1
puts "Please input weekly sales of #{books_array[x]} separated by a comma."
weekly_sales = gets.chomp.split(",")
end
显然这行不通。它只会一遍又一遍地重新定义 weekly_sales
。有没有办法实现我所追求的目标,并在 .times
方法的每个循环中创建一个新数组?
最佳答案
weekly_sales = {}
puts 'Please enter a list of books'
book_list = gets.chomp
books = book_list.split(',')
books.each do |book|
puts "Please input weekly sales of #{book} separated by a comma."
weekly_sales[book] = gets.chomp.split(',')
end
在ruby中,有一个哈希的概念,它是一个key/value对。在这种情况下,weekly_sales 是散列,我们使用书名作为键,数组作为值。
我对您的代码所做的一个小改动是不再执行 books.count.times 来定义循环,然后使用计数器取消引用数组元素,每个都是遍历集合的更好方法。
关于ruby - 在 Ruby 中动态创建数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1829219/