Skip to content

Commit 0036d53

Browse files
committed
feat: v2.1.0
1 parent 3d005de commit 0036d53

File tree

5 files changed

+66
-39
lines changed

5 files changed

+66
-39
lines changed

Diff for: README.md

+18-9
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
\_/__/
1010
```
1111

12-
# Underscore.go [![GoDoc](https://godoc.org/github.com/ahl5esoft/golang-underscore?status.svg)](https://godoc.org/github.com/ahl5esoft/golang-underscore) [![Go Report Card](https://goreportcard.com/badge/github.com/ahl5esoft/golang-underscore)](https://goreportcard.com/report/github.com/ahl5esoft/golang-underscore) ![Version](https://img.shields.io/badge/version-2.0.1-green.svg)
12+
# Underscore.go [![GoDoc](https://godoc.org/github.com/ahl5esoft/golang-underscore?status.svg)](https://godoc.org/github.com/ahl5esoft/golang-underscore) [![Go Report Card](https://goreportcard.com/badge/github.com/ahl5esoft/golang-underscore)](https://goreportcard.com/report/github.com/ahl5esoft/golang-underscore) ![Version](https://img.shields.io/badge/version-2.1.0-green.svg)
1313
like <a href="http://underscorejs.org/">underscore.js</a> and C# LINQ, but for Go
1414

1515
## Installation
@@ -64,19 +64,22 @@ like <a href="http://underscorejs.org/">underscore.js</a> and C# LINQ, but for G
6464

6565
__Arguments__
6666

67+
* `iterator` - func(element or value, key or index, memo) memo
6768
* `memo` - anyType
68-
* `iterator` - func(memo, element or value, key or index) memo
6969

7070
__Examples__
7171

7272
```go
73-
dst := make([]int, 0)
74-
Chain([]int{1, 2}).Aggregate(make([]int, 0), func(memo []int, n, _ int) []int {
75-
memo = append(memo, n)
76-
memo = append(memo, n+10)
77-
return memo
78-
}).Value(&dst)
79-
// dst = [1 11 2 12]
73+
var res []int
74+
Chain([]int{1, 2}).Aggregate(
75+
func(memo []int, n, _ int) []int {
76+
memo = append(memo, n)
77+
memo = append(memo, n+10)
78+
return memo
79+
},
80+
make([]int, 0),
81+
).Value(&res)
82+
// res = [1 11 2 12]
8083
```
8184

8285
__Same__
@@ -970,6 +973,12 @@ __Same__
970973
* `FilterBy`
971974

972975
## Release Notes
976+
~~~
977+
v2.1.0 (2019-06-27)
978+
* IEnumerable增加Order、OrderBy、Sort、SortBy
979+
* IEnumerable.Aggregate(memo interface{}, fn interface{}) -> IEnumerable.Aggregate(fn interface{}, memo interface{})
980+
~~~
981+
973982
~~~
974983
v2.0.0 (2019-06-27)
975984
* 删除IQuery

Diff for: aggregate.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package underscore
22

33
import "reflect"
44

5-
func (m enumerable) Aggregate(memo interface{}, fn interface{}) IEnumerable {
5+
func (m enumerable) Aggregate(fn interface{}, memo interface{}) IEnumerable {
66
fnValue := reflect.ValueOf(fn)
77
iterator := m.GetEnumerator()
88
memoValue := reflect.ValueOf(memo)

Diff for: aggregate_test.go

+26-17
Original file line numberDiff line numberDiff line change
@@ -9,34 +9,43 @@ import (
99
func Benchmark_Aggregate(b *testing.B) {
1010
for n := 0; n < b.N; n++ {
1111
total := 0
12-
Range(1, 100, 1).Aggregate(make([]int, 0), func(memo []int, r, _ int) []int {
13-
memo = append(memo, r)
14-
memo = append(memo, -r)
15-
return memo
16-
}).Value(&total)
12+
Range(1, 100, 1).Aggregate(
13+
func(memo []int, r, _ int) []int {
14+
memo = append(memo, r)
15+
memo = append(memo, -r)
16+
return memo
17+
},
18+
make([]int, 0),
19+
).Value(&total)
1720
}
1821
}
1922

2023
func Benchmark_Aggregate_NoValue(b *testing.B) {
2124
for n := 0; n < b.N; n++ {
22-
Range(1, 100, 1).Aggregate(make([]int, 0), func(memo []int, r, _ int) []int {
23-
memo = append(memo, r)
24-
memo = append(memo, -r)
25-
return memo
26-
})
25+
Range(1, 100, 1).Aggregate(
26+
func(memo []int, r, _ int) []int {
27+
memo = append(memo, r)
28+
memo = append(memo, -r)
29+
return memo
30+
},
31+
make([]int, 0),
32+
)
2733
}
2834
}
2935

3036
func Test_Aggregate(t *testing.T) {
31-
dst := make([]int, 0)
32-
Chain([]int{1, 2}).Aggregate(make([]int, 0), func(memo []int, n, _ int) []int {
33-
memo = append(memo, n)
34-
memo = append(memo, n+10)
35-
return memo
36-
}).Value(&dst)
37+
var res []int
38+
Chain([]int{1, 2}).Aggregate(
39+
func(memo []int, n, _ int) []int {
40+
memo = append(memo, n)
41+
memo = append(memo, n+10)
42+
return memo
43+
},
44+
make([]int, 0),
45+
).Value(&res)
3746
assert.EqualValues(
3847
t,
39-
dst,
48+
res,
4049
[]int{1, 11, 2, 12},
4150
)
4251
}

Diff for: reduce.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
package underscore
22

3-
func (m enumerable) Reduce(memo interface{}, fn interface{}) IEnumerable {
4-
return m.Aggregate(memo, fn)
3+
func (m enumerable) Reduce(fn interface{}, memo interface{}) IEnumerable {
4+
return m.Aggregate(fn, memo)
55
}

Diff for: reduce_test.go

+19-10
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,24 @@
11
package underscore
22

3-
import "testing"
3+
import (
4+
"testing"
5+
6+
"github.com/stretchr/testify/assert"
7+
)
48

59
func Test_Reduce(t *testing.T) {
6-
dst := make([]int, 0)
7-
Chain([]int{1, 2}).Reduce(make([]int, 0), func(memo []int, n, _ int) []int {
8-
memo = append(memo, n)
9-
memo = append(memo, n+10)
10-
return memo
11-
}).Value(&dst)
12-
if !(len(dst) == 4 && dst[0] == 1 && dst[1] == 11 && dst[2] == 2 && dst[3] == 12) {
13-
t.Error(dst)
14-
}
10+
var res []int
11+
Chain([]int{1, 2}).Reduce(
12+
func(memo []int, n, _ int) []int {
13+
memo = append(memo, n)
14+
memo = append(memo, n+10)
15+
return memo
16+
},
17+
make([]int, 0),
18+
).Value(&res)
19+
assert.EqualValues(
20+
t,
21+
res,
22+
[]int{1, 11, 2, 12},
23+
)
1524
}

0 commit comments

Comments
 (0)