Skip to content

Instantly share code, notes, and snippets.

@thomasnield
Created January 17, 2018 20:00
Show Gist options
  • Select an option

  • Save thomasnield/3707006f4da8fc8edb487e70458f87f6 to your computer and use it in GitHub Desktop.

Select an option

Save thomasnield/3707006f4da8fc8edb487e70458f87f6 to your computer and use it in GitHub Desktop.
Kotlin Tuples
/**
* Try to use explicit data classes, but if you want to quickly create tuples these will help
*/
data class Tuple2<out A, out B>(val a: A, val b: B)
data class Tuple3<out A, out B, out C>(val a: A, val b: B, val c: C)
data class Tuple4<out A, out B, out C, out D>(val a: A, val b: B, val c: C, val d: D)
data class Tuple5<out A, out B, out C, out D, out E>(val a: A, val b: B, val c: C, val d: D, val e: E)
data class Tuple6<out A, out B, out C, out D, out E, out F>(val a: A, val b: B, val c: C, val d: D, val e: E, val f: F)
data class Tuple7<out A, out B, out C, out D, out E, out F, out G>(val a: A, val b: B, val c: C, val d: D, val e: E, val f: F, val g: G)
data class Tuple8<out A, out B, out C, out D, out E, out F, out G, out H>(val a: A, val b: B, val c: C, val d: D, val e: E, val f: F, val g: G, val h: H)
data class Tuple9<out A, out B, out C, out D, out E, out F, out G, out H, out I>(val a: A, val b: B, val c: C, val d: D, val e: E, val f: F, val g: G, val h: H, val i: I)
data class Tuple10<out A, out B, out C, out D, out E, out F, out G, out H, out I, out J>(val a: A, val b: B, val c: C, val d: D, val e: E, val f: F, val g: G, val h: H, val i: I, val j: J)
data class Tuple11<out A, out B, out C, out D, out E, out F, out G, out H, out I, out J, out K>(val a: A, val b: B, val c: C, val d: D, val e: E, val f: F, val g: G, val h: H, val i: I, val j: J, val k: K)
fun <A,B> t(a: A, b: B) = Tuple2(a,b)
fun <A,B,C> t(a: A, b: B, c: C) = Tuple3(a,b,c)
fun <A,B,C,D> t(a: A, b: B, c: C, d: D) = Tuple4(a,b,c,d)
fun <A,B,C,D,E> t(a: A, b: B, c: C, d: D, e: E) = Tuple5(a,b,c,d,e)
fun <A,B,C,D,E,F> t(a: A, b: B, c: C, d: D, e: E, f: F) = Tuple6(a,b,c,d,e,f)
fun <A,B,C,D,E,F,G> t(a: A, b: B, c: C, d: D, e: E, f: F, g: G) = Tuple7(a,b,c,d,e,f,g)
fun <A,B,C,D,E,F,G,H> t(a: A, b: B, c: C, d: D, e: E, f: F, g: G, h: H) = Tuple8(a,b,c,d,e,f,g,h)
fun <A,B,C,D,E,F,G,H,I> t(a: A, b: B, c: C, d: D, e: E, f: F, g: G, h: H, i: I) = Tuple9(a,b,c,d,e,f,g,h,i)
fun <A,B,C,D,E,F,G,H,I,J> t(a: A, b: B, c: C, d: D, e: E, f: F, g: G, h: H, i: I, j: J) = Tuple10(a,b,c,d,e,f,g,h,i,j)
fun <A,B,C,D,E,F,G,H,I,J,K> t(a: A, b: B, c: C, d: D, e: E, f: F, g: G, h: H, i: I, j: J, k: K) = Tuple11(a,b,c,d,e,f,g,h,i,j,k)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment