2017-08-18 84 views
-4

的組我想在一個消息以創建一組元素,如下面圖像Scala中創建元素

enter image description here

更新:

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

消息可以表示類似下面

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

Group - >表示重複基團 - 我需要幫助來定義組和子 組

該元素定義了鍵=值組合,其在基團

以下重複有幾點

  1. FixMessage的「fields」屬性是什麼?

    - 是它們是修復消息的屬性和每個字段被表示爲 case class Element(key:String;value:String)

  2. 重複組 它們Element沒有重複的次數

  3. 是鍵和值的所有字符串?

    - 考慮它們作爲字符串現在

  4. 場N(字段1,字段2等)表示不同類型?

    - 它們表示它是不同的數據類型。但現在我們可以把它們作爲相同的數據類型來簡化它。

輸出:

鍵2 =值; key3=value3;key4=value=4;key3=value3;key4=value=4; key2 = value 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)分別

+0

@GhostCat希望現在有點清楚 – coder25

+0

'trait Group {val ele = List [myType](); val grp = List [Group]()}' – jwvh

+0

@jwvh thanks.so爲了實現我的目標列表...我應該遵循什麼可能的方法。我用特性組擴展我所有的類,並添加元素列表 – coder25

回答

1

如果我正確理解該域,像在重複2次這應該工作:

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。

+0

是的,您明白了,但我不需要通過列表清單來實現這一點。我可能需要方法將組和子組添加到它。但不能確定像'trait Group {val ele = List [myType](); val grp = List [Group]()}' – coder25

+0

我已經回答了您的疑問。請看看 – coder25

+0

'key2 = value2'是一個可以重複n次的組... ...接着是一個子組。 – coder25