1

我有一个关于 Ruby 数组的问题,但很难描述,所以我在阅读其他问题时找不到太多信息。这里是。

目前我有以下有效的代码(虾表的一部分)

片段一:

  students = all_students.map do |student|          
      [
      student[:first_name],
      student[:last_name],
      student[:email],
      student[:given_name]
      ]
  end
  pdf.table students

这很好用,但现在我想省略一些列(例如,不显示last_name)。假设我得到一个列名数组,比如说pickColumns:

片段 B:

  pickedColumns = []
  pickedColumns << :first_name << :email << :given_name  #NOTE: no (:last_name) there!

  students = all_students.map do |student|
      studentCols = pickedColumns.each do |studentCol|
        student[studentCol]
      end
  end
  p.table students

使用代码段 B 中的替换代码,我无法实现代码段 A 的效果。我在代码段 B 中得到的并不是“student[:first_name]”的实际值,而是每个字符串“first_name”的实际值排。

如果我的描述不是 100% 清楚,请告诉我。

谢谢你的帮助!

问候

4

1 回答 1

3
students = all_students.map do |student|
  studentCols = pickedColumns.each do |studentCol|
    student[studentCol]
  end
end

做那个

students = all_students.map do |student|
  pickedColumns.map do |studentCol|
    student[studentCol]
  end
end

它会起作用。

PS:要遵守 ruby​​ 的命名约定,您应该更改变量名称以使用所有小写和下划线,而不是 camelCase。

于 2011-03-06T21:37:12.863 回答