-2

我有两个问题。

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

提前致谢。

4

1 回答 1

0

对于您的 1),请使用 splat 运算符:

Struct.new(*members)

我真的不明白你的第二个问题。是“如何在两个配置中访问相同的变量”?

config.members.each { |key|
  configMember = config[key]
  # do something
  flat[key] = result
}
于 2013-07-12T09:37:27.793 回答