2010-04-07 17 views
9

Suponga que desea tener algo como variadic templates (la capacidad de definir n parámetros de tipo para una clase genérica) en Scala. Por ejemplo, usted no quiere definir Tuple2[+T1, +T2] y Tuple3[+T1, +T2, +T3] sino Tuple[T*].Emulación de plantillas variadic en Scala

¿Hay otras opciones que HLists que admitan Tuple, Producto y Función?

+2

Supongo que podría lanzar su propia versión de HList, pero ¿por qué? ¿Puedes señalar cómo la opción prevista sería diferente de una HList? –

+0

La definición de tipo en el lado del usuario es un poco complicado para mi gusto. Una solución ideal permitiría una definición de tipo más natural Tuple [T1, T2, T3] como el TupleX ya hace en las bibliotecas de Scala. Además, debe admitir otros tipos como Función y Producto. –

+0

Pero Scala ya ofrece, y HList usa, algo de azúcar sintáctico para reducir esa complejidad. Por ejemplo, vea esta definición de tipo desde el enlace HList: 'val list: Int :: String :: Boolean :: HNil = ...'. –

Respuesta

3

Por el momento no hay una construcción sintáctica en Scala que permita lo que estás sugiriendo. Esa es también la razón por la cual hay 22 clases Tuple (Tuple2, Tuple3, ..., Tuple22) y también diferentes clases de funciones (Function0, ...).

+5

La pregunta implica que no hay una construcción de lenguaje. –

Cuestiones relacionadas