我有两个问题。
1)我需要创建一个动态结构,其成员通过数组驱动。 例如:
members = [:a, :b]
Config = Struct.new(members) #=> Struct.new(:a, :b)
FlatConfig = Struct.new(members) #=> Struct.new(:a, :b)
config = Config.new()
flat = FlatConfig.new()
几天之后,如果我需要在这些结构中添加另一个成员,那么我需要做的就是在该成员数组中添加一个成员(memebers = [:a,:b,:c])并且我不知道需要进一步强化代码。所以我问这个。怎么做到这一点?
2)现在我需要通过对config struct成员值进行一些操作来构建平面Struct成员的值。 例如:
config.each{|configMember|
result = configMember.collect{|c| someArray.collect{|s| s + '--' + y}}
flat[":#{cofigMember}"] = result #=> Intent is to store result in same member as iterated through config struct.
}
如何实现(1)和(2)?
提前致谢。
答案 0 :(得分:0)
对于1),请使用splat运算符:
Struct.new(*members)
我真的不明白你的第二个问题。是“如何在两个配置中访问相同的变量”?
config.members.each { |key|
configMember = config[key]
# do something
flat[key] = result
}