首页 > 解决方案 > 存储对象数组

问题描述

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

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").

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

标签: rubyjruby

解决方案


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

不,它没有。这些项目是分开的/不同的。但是第二个项目的初始化器改变了“全局”类变量,所以所有项目看起来都一样。

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

免费在线书籍:Ruby 编程


推荐阅读