存储对象数组

Storing an array of objects

我正在尝试存储对象数组;

class ColumnMapping
    @@column = nil
    @@method = nil

    def initialize(col, meth)
        @@column = col
        @@method = meth
    end

    def get_metadata_field()
        return @@column
    end

    def get_method()
        return @@method
    end
end

class Massage
    require 'thread'

    @@column_mappings = []
    @ba = nil

    def initialize()        
        @@column_mappings << ColumnMapping.new("ESI Folder Path", "get_esi_folder_path")
        @@column_mappings << ColumnMapping.new("Has Embedded Files", "get_has_embedded_items")
        @ba = $utilities.getBulkAnnotatercolumn_mappings
    end
end

我调试的时候,@@column_mappings里面的数据是第二行的两个实例; @@column_mappings << ColumnMapping.new("Has Embedded Files", "get_has_embedded_items")

出于某种原因,它用最后插入的项目覆盖了数组,为什么?

For some reason, it overwrites the array with the last inserted item, why?

不,不是。这些项目是 separate/distinct。但是第二个项目的初始值设定项改变了 "global" class 变量,因此所有项目 看起来 相同。

不要使用 class 变量 (@@column),使用实例变量 (@column)。

免费在线图书:Programming Ruby