【发布时间】:2017-10-14 02:03:03
【问题描述】:
我有以下课程:
class Entity
attr_accessor :name, :internal_asn_number, :classification_id
def initialize(name = nil,int_asn_no = 0,classification_id = nil)
@name = name
@internal_asn_number = int_asn_no
@classification_id = classification_id
然后我有一个从 YAML 文件动态创建实体对象的方法,但是我希望字段 :internal_asn_number 也是动态的,它应该从 64512 到 65534(含)。例如,如果代码仅创建三个 Entities 对象,则字段 :internal_asn_number 应分别具有每个对象的值 64512、64513 和 64514。
我的代码如下:
#map of yaml fields from entities yaml conf files
FIELDS = {'ENTITY_ID'.to_sym => 'entity_identification','NAME'.to_sym => 'name','CLASS_ID'.to_sym => 'classification_id'}
def load_yaml
path = /mf370/Desktop/entities_yamls/
entities = Array.new
Dir.entries(path).select {|file|
if !File.directory? path + file
if File.extname(path + file) == '.yaml'
config = YAML.load_file(path + file)
asn=*(64512..65533)
asn.each do |number|
entity = Entity.new(config[FIELDS[:ENTITY_ID]][FIELDS[:NAME]],"#{number + 1}",
config[FIELDS[:ENTITY_ID]][FIELDS[:CLASS_ID]])
entities << entity
end
end
end
}
return entities
end
这段代码在输出中给了我几个问题,实体数组只有最后一个对象被保存了几次,它的:asn_internal_number 的值为 65533,是范围中的最后一个数字。
【问题讨论】:
标签: arrays ruby object dynamic yaml