9
假設您想在Scala中擁有類似variadic templates(能夠爲泛型類定義n個類型參數)。在Scala中模擬可變參數模板
例如,您不想定義Tuple2[+T1, +T2]
和Tuple3[+T1, +T2, +T3]
,而是Tuple[T*]
。
除了支持元組,產品和功能的HLists以外,還有其他選擇嗎?
假設您想在Scala中擁有類似variadic templates(能夠爲泛型類定義n個類型參數)。在Scala中模擬可變參數模板
例如,您不想定義Tuple2[+T1, +T2]
和Tuple3[+T1, +T2, +T3]
,而是Tuple[T*]
。
除了支持元組,產品和功能的HLists以外,還有其他選擇嗎?
目前在Scala中沒有語法結構,它允許您建議的內容。這也是爲什麼有22個元組類(Tuple2,Tuple3,...,Tuple22)以及不同的Function類(Function0,...)的原因。
這個問題意味着沒有語言結構。 – 2010-04-08 05:18:04
我假設你可以推出你自己的HList版本,但是爲什麼?你能指出你的設想選項與HList的不同嗎? – 2010-04-07 15:52:07
用戶端的類型定義對我來說有點複雜。一個理想的解決方案將允許一個更自然的類型定義Tuple [T1,T2,T3],就像TupleX已經在Scala庫中做的那樣。此外,它應該支持其他類型,如功能和產品。 – 2010-04-08 05:22:29
但斯卡拉已經提供,而HList使用一些語法糖來降低複雜性。例如,請參閱HList鏈接中的這種類型定義:'val list:Int :: String :: Boolean :: HNil = ...'。 – 2010-04-08 11:54:15