mirror of
https://github.com/samber/lo.git
synced 2025-09-26 20:11:13 +08:00
feat: adding Unpack() method to TupleX
This commit is contained in:
@@ -1232,6 +1232,14 @@ r1, r2 := lo.Unpack2[string, int](lo.Tuple2[string, int]{"a", 1})
|
||||
// "a", 1
|
||||
```
|
||||
|
||||
Unpack is also available as a method of TupleX.
|
||||
|
||||
```go
|
||||
tuple2 := lo.T2("a", 1)
|
||||
a, b := tuple2.Unpack()
|
||||
// "a" 1
|
||||
```
|
||||
|
||||
[[play](https://go.dev/play/p/xVP_k0kJ96W)]
|
||||
|
||||
### Zip2 -> Zip9
|
||||
|
40
types.go
40
types.go
@@ -12,6 +12,11 @@ type Tuple2[A any, B any] struct {
|
||||
B B
|
||||
}
|
||||
|
||||
// Unpack returns values contained in tuple.
|
||||
func (t Tuple2[A, B]) Unpack() (A, B) {
|
||||
return t.A, t.B
|
||||
}
|
||||
|
||||
// Tuple3 is a group of 3 elements.
|
||||
type Tuple3[A any, B any, C any] struct {
|
||||
A A
|
||||
@@ -19,6 +24,11 @@ type Tuple3[A any, B any, C any] struct {
|
||||
C C
|
||||
}
|
||||
|
||||
// Unpack returns values contained in tuple.
|
||||
func (t Tuple3[A, B, C]) Unpack() (A, B, C) {
|
||||
return t.A, t.B, t.C
|
||||
}
|
||||
|
||||
// Tuple4 is a group of 4 elements.
|
||||
type Tuple4[A any, B any, C any, D any] struct {
|
||||
A A
|
||||
@@ -27,6 +37,11 @@ type Tuple4[A any, B any, C any, D any] struct {
|
||||
D D
|
||||
}
|
||||
|
||||
// Unpack returns values contained in tuple.
|
||||
func (t Tuple4[A, B, C, D]) Unpack() (A, B, C, D) {
|
||||
return t.A, t.B, t.C, t.D
|
||||
}
|
||||
|
||||
// Tuple5 is a group of 5 elements.
|
||||
type Tuple5[A any, B any, C any, D any, E any] struct {
|
||||
A A
|
||||
@@ -36,6 +51,11 @@ type Tuple5[A any, B any, C any, D any, E any] struct {
|
||||
E E
|
||||
}
|
||||
|
||||
// Unpack returns values contained in tuple.
|
||||
func (t Tuple5[A, B, C, D, E]) Unpack() (A, B, C, D, E) {
|
||||
return t.A, t.B, t.C, t.D, t.E
|
||||
}
|
||||
|
||||
// Tuple6 is a group of 6 elements.
|
||||
type Tuple6[A any, B any, C any, D any, E any, F any] struct {
|
||||
A A
|
||||
@@ -46,6 +66,11 @@ type Tuple6[A any, B any, C any, D any, E any, F any] struct {
|
||||
F F
|
||||
}
|
||||
|
||||
// Unpack returns values contained in tuple.
|
||||
func (t Tuple6[A, B, C, D, E, F]) Unpack() (A, B, C, D, E, F) {
|
||||
return t.A, t.B, t.C, t.D, t.E, t.F
|
||||
}
|
||||
|
||||
// Tuple7 is a group of 7 elements.
|
||||
type Tuple7[A any, B any, C any, D any, E any, F any, G any] struct {
|
||||
A A
|
||||
@@ -57,6 +82,11 @@ type Tuple7[A any, B any, C any, D any, E any, F any, G any] struct {
|
||||
G G
|
||||
}
|
||||
|
||||
// Unpack returns values contained in tuple.
|
||||
func (t Tuple7[A, B, C, D, E, F, G]) Unpack() (A, B, C, D, E, F, G) {
|
||||
return t.A, t.B, t.C, t.D, t.E, t.F, t.G
|
||||
}
|
||||
|
||||
// Tuple8 is a group of 8 elements.
|
||||
type Tuple8[A any, B any, C any, D any, E any, F any, G any, H any] struct {
|
||||
A A
|
||||
@@ -69,6 +99,11 @@ type Tuple8[A any, B any, C any, D any, E any, F any, G any, H any] struct {
|
||||
H H
|
||||
}
|
||||
|
||||
// Unpack returns values contained in tuple.
|
||||
func (t Tuple8[A, B, C, D, E, F, G, H]) Unpack() (A, B, C, D, E, F, G, H) {
|
||||
return t.A, t.B, t.C, t.D, t.E, t.F, t.G, t.H
|
||||
}
|
||||
|
||||
// Tuple9 is a group of 9 elements.
|
||||
type Tuple9[A any, B any, C any, D any, E any, F any, G any, H any, I any] struct {
|
||||
A A
|
||||
@@ -81,3 +116,8 @@ type Tuple9[A any, B any, C any, D any, E any, F any, G any, H any, I any] struc
|
||||
H H
|
||||
I I
|
||||
}
|
||||
|
||||
// Unpack returns values contained in tuple.
|
||||
func (t Tuple9[A, B, C, D, E, F, G, H, I]) Unpack() (A, B, C, D, E, F, G, H, I) {
|
||||
return t.A, t.B, t.C, t.D, t.E, t.F, t.G, t.H, t.I
|
||||
}
|
||||
|
Reference in New Issue
Block a user