Compare commits
	
		
			2 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| b0d3ce8c1c | |||
| 021465e524 | 
| @@ -31,16 +31,16 @@ func CompareIntArr(arr1 []int, arr2 []int) bool { | |||||||
| 	return false | 	return false | ||||||
| } | } | ||||||
|  |  | ||||||
| func CompareArr[T OrderedConstraint](arr1 []T, arr2 []T) bool { | func CompareArr[T OrderedConstraint](arr1 []T, arr2 []T) int { | ||||||
|  |  | ||||||
| 	for i := 0; i < len(arr1) || i < len(arr2); i++ { | 	for i := 0; i < len(arr1) || i < len(arr2); i++ { | ||||||
|  |  | ||||||
| 		if i < len(arr1) && i < len(arr2) { | 		if i < len(arr1) && i < len(arr2) { | ||||||
|  |  | ||||||
| 			if arr1[i] < arr2[i] { | 			if arr1[i] < arr2[i] { | ||||||
| 				return true | 				return -1 | ||||||
| 			} else if arr1[i] > arr2[i] { | 			} else if arr1[i] > arr2[i] { | ||||||
| 				return false | 				return +2 | ||||||
| 			} else { | 			} else { | ||||||
| 				continue | 				continue | ||||||
| 			} | 			} | ||||||
| @@ -49,17 +49,17 @@ func CompareArr[T OrderedConstraint](arr1 []T, arr2 []T) bool { | |||||||
|  |  | ||||||
| 		if i < len(arr1) { | 		if i < len(arr1) { | ||||||
|  |  | ||||||
| 			return true | 			return +1 | ||||||
|  |  | ||||||
| 		} else { // if i < len(arr2) | 		} else { // if i < len(arr2) | ||||||
|  |  | ||||||
| 			return false | 			return -1 | ||||||
|  |  | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	return false | 	return 0 | ||||||
| } | } | ||||||
|  |  | ||||||
| func CompareString(a, b string) int { | func CompareString(a, b string) int { | ||||||
|   | |||||||
| @@ -1,5 +1,10 @@ | |||||||
| package langext | package langext | ||||||
|  |  | ||||||
|  | type MapEntry[T comparable, V any] struct { | ||||||
|  | 	Key   T | ||||||
|  | 	Value V | ||||||
|  | } | ||||||
|  |  | ||||||
| func MapKeyArr[T comparable, V any](v map[T]V) []T { | func MapKeyArr[T comparable, V any](v map[T]V) []T { | ||||||
| 	result := make([]T, 0, len(v)) | 	result := make([]T, 0, len(v)) | ||||||
| 	for k := range v { | 	for k := range v { | ||||||
| @@ -8,6 +13,14 @@ func MapKeyArr[T comparable, V any](v map[T]V) []T { | |||||||
| 	return result | 	return result | ||||||
| } | } | ||||||
|  |  | ||||||
|  | func MapValueArr[T comparable, V any](v map[T]V) []V { | ||||||
|  | 	result := make([]V, 0, len(v)) | ||||||
|  | 	for _, mv := range v { | ||||||
|  | 		result = append(result, mv) | ||||||
|  | 	} | ||||||
|  | 	return result | ||||||
|  | } | ||||||
|  |  | ||||||
| func ArrToMap[T comparable, V any](a []V, keyfunc func(V) T) map[T]V { | func ArrToMap[T comparable, V any](a []V, keyfunc func(V) T) map[T]V { | ||||||
| 	result := make(map[T]V, len(a)) | 	result := make(map[T]V, len(a)) | ||||||
| 	for _, v := range a { | 	for _, v := range a { | ||||||
| @@ -16,6 +29,17 @@ func ArrToMap[T comparable, V any](a []V, keyfunc func(V) T) map[T]V { | |||||||
| 	return result | 	return result | ||||||
| } | } | ||||||
|  |  | ||||||
|  | func MapToArr[T comparable, V any](v map[T]V) []MapEntry[T, V] { | ||||||
|  | 	result := make([]MapEntry[T, V], 0, len(v)) | ||||||
|  | 	for mk, mv := range v { | ||||||
|  | 		result = append(result, MapEntry[T, V]{ | ||||||
|  | 			Key:   mk, | ||||||
|  | 			Value: mv, | ||||||
|  | 		}) | ||||||
|  | 	} | ||||||
|  | 	return result | ||||||
|  | } | ||||||
|  |  | ||||||
| func CopyMap[K comparable, V any](a map[K]V) map[K]V { | func CopyMap[K comparable, V any](a map[K]V) map[K]V { | ||||||
| 	result := make(map[K]V, len(a)) | 	result := make(map[K]V, len(a)) | ||||||
| 	for k, v := range a { | 	for k, v := range a { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user