Диян обнови решението на 17.10.2014 13:54 (преди над 3 години)
+package main
+
+func Map(data []string, mapper func(string) string) []string {
+
+ result := make([]string, 0, (len(data)))
+ for _, value := range data {
+ result = append(result, mapper(value))
+ }
+ return result
+}
+
+func Filter(data []string, predicate func(string) bool) []string {
+
+ var result []string
+ for _, value := range data {
+ if predicate(value) {
+ result = append(result, value)
+ }
+ }
+
+ return result
+}
+
+func Reduce(data []string, combinator func(string, string) string) string {
+
+ result := ""
+ for _, value := range data {
+ result = combinator(result, value)
+ }
+ return result
+}
+
+func Any(data []string, predicate func(string) bool) bool {
+ for _, value := range data {
+ if predicate(value) {
+ return true
+ }
+ }
+ return false
+}
+
+func All(data []string, predicate func(string) bool) bool {
+ for _, value := range data {
+ if predicate(value) == false {
+ return false
+ }
+ }
+ return true
+}
Хубаво си се сетил че nil
slice
-а e append
-able, но:
Сигурен ли си че
append
-а въвMap
-а е най ... ъх красивото решение?не смяташ ли че ако ти дам входни данни с размер 1000 от които ти ще филтрираш нищо - ще покопира малко твърде много?
Reduce
-а ти дали работи вслучая наlen(data) == 1
?това
== false
ми странно ;)
погледни и тук