2010-04-07 45 views
9

假設您想在Scala中擁有類似variadic templates(能夠爲泛型類定義n個類型參數)。在Scala中模擬可變參數模板

例如,您不想定義Tuple2[+T1, +T2]Tuple3[+T1, +T2, +T3],而是Tuple[T*]

除了支持元組,產品和功能的HLists以外,還有其他選擇嗎?

+2

我假設你可以推出你自己的HList版本,但是爲什麼?你能指出你的設想選項與HList的不同嗎? – 2010-04-07 15:52:07

+0

用戶端的類型定義對我來說有點複雜。一個理想的解決方案將允許一個更自然的類型定義Tuple [T1,T2,T3],就像TupleX已經在Scala庫中做的那樣。此外,它應該支持其他類型,如功能和產品。 – 2010-04-08 05:22:29

+0

但斯卡拉已經提供,而HList使用一些語法糖來降低複雜性。例如,請參閱HList鏈接中的這種類型定義:'val list:Int :: String :: Boolean :: HNil = ...'。 – 2010-04-08 11:54:15

回答

3

目前在Scala中沒有語法結構,它允許您建議的內容。這也是爲什麼有22個元組類(Tuple2,Tuple3,...,Tuple22)以及不同的Function類(Function0,...)的原因。

+5

這個問題意味着沒有語言結構。 – 2010-04-08 05:18:04