Scala创建元素组

时间:2017-08-18 18:33:59

标签: scala case-class

我想在消息中创建一组元素,如下图所示

enter image description here

更新

 case class Element(key:String;value:String)

消息可以表示如下

 case class Msg(field1:Element,field2:Group)

Group - >代表重复组 - 我需要帮助来定义组和子组  组

元素定义键=值组合,该组合在组

中重复

以下是一些要点

  1. 是FixMessage的“字段”属性吗?

    - 是的,它们是修复消息的属性,每个字段都表示为 case class Element(key:String;value:String)

  2. 重复组  他们Element不重复

  3. 键和值是否都是字符串?

    将它们作为现在的字符串

  4. 字段N(字段1,字段2等)代表不同的类型?

    - 他们将它们表示为不同的数据类型。但是现在我们可以将它们作为相同的数据类型来使它变得简单。

  5. 输出:

    key2 = value2 ; key3=value3;key4=value=4;key3=value3;key4=value=4; key2 = valu      E2; key3=value3;key‌​4=value4;key3=value‌​3;key4=value4

    小组key2=value2重复2次 子组为key3=value3;key4=value=4;key3=value3;key4=value=4,每组(key2=value2)重复增加2次

1 个答案:

答案 0 :(得分:1)

如果我正确理解域名,那么这样的事情应该有效:

case class Message(entries: List[Entry])

case class Entry(name: String, value: Value)
trait Value
object Value {
  case class Single (v: String) extends Value
  case class Group (entries: List[List[Entry]]) extends Value
}

Message(
  Entry("Key 1", Value.Single("Value 1")),
  Entry("Key 2", Value.Group(
    List(
      List(
        Entry("Key 3", Value.Single("Value 3")),
        Entry("Key 4", Value.Single("Value 4"))
      ),
      List(
        Entry("Key 3", Value.Single("Value 5")),
        Entry("Key 4", Value.Single("Value 6"))
      )
    )
  ))
)

当然可以创建一些辅助函数来为它创建更好的DSL。