ruby - 在 Ruby 中动态创建数组

标签 ruby arrays hash

有没有办法在 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/

相关文章:

ruby-on-rails - 无法在 Rails 上安装 pg gem

ruby-on-rails - Rails 与 JQueryMobile - 使用 send_data 进行双重渲染

encryption - 数字签名的标准格式

ruby-on-rails - Rails 应用程序在下订单和更改交付状态后不发送电子邮件,它只是崩溃了

ruby-on-rails - 为设计用户添加角色和权限;无方法错误 : undefined method

arrays - c 中的空数组大小

php - 前缀和通过在数组中移动 m 步找到最大收集值

python - 如何获取numpy数组所有可能的数组属性?

algorithm - Triple-CRC-32 对于生成非安全均匀分布哈希来说是一个坏(或不是)主意吗?

c# - Telerik Sitefinity 密码哈希函数