Sunday, March 18, 2018
Groovy Inject
Higher Order Functions
build value, with out side effects or changing outside variable
// Traditional "sum of the values in a list" sample.
// First with each() and side effect, because we have
// to declare a variable to hold the result:
def total = 0
(1..4).each { total += it }
assert 10 == total
// With the inject method we 'inject' the
// first value of the result, and then for
// each item the result is increased and
// returned for the next iteration.
def sum = (1..4).inject(0) { result, i -> result + i }
assert 10 == sum
// We add a println statement to see what happens.
(1..4).inject(0) { result, i ->
println "$result + $i = ${result + i}"
result + i
}
// Output:
// 0 + 1 = 1
// 1 + 2 = 3
// 3 + 3 = 6
// 6 + 4 = 10
class Person {
String username
String email
}
def persons = [
new Person(username:'mrhaki', email: 'email@host.com'),
new Person(username:'hubert', email: 'other@host.com')
]
// Convert list to a map where the key is the value of
// username property of Person and the value is the email
// property of Person. We inject an empty map as the starting
// point for the result.
def map = persons.inject([:]) { result, person ->
result[person.username] = person.email
result
}
assert [mrhaki: 'email@host.com', hubert: 'other@host.com'] == map
['Hubert', 'Alexander', 'Klein', 'Ikkink'].inject('mr') { nickname, name ->
nickname + name[0].toLowerCase()
} == 'mrhaki'
//true
Subscribe to:
Post Comments (Atom)
உப்பு மாங்காய்
சுருக்குப்பை கிழவி. சுருக்கங்கள் சூழ் கிழவி. பார்க்கும் போதெல்லாம் கூடையுடனே குடியிருப்பாள். கூடை நிறைய குட்டி குட்டி மாங்காய்கள். வெட்டிக்க...
-
கந்தன் வேலைக்குச் சென்று கிட்டத்தட்ட பத்து ஆண்டுகளுக்கு பிறகு சொந்த ஊர் திரும்பி இருந்தான். காளிக் கோயிலைத் தாண்டி தான் அவன் வீட்ட...
-
பிரேமாவின் மூத்த ஆண் குழந்தைக்கு முன் பிறந்த இளைய பெண் குழந்தை அவள். வயலும் சேறும் இரண்டற கலந்த ஊர். முழுதாய் மூன்றாம் வகுப்பைத் ...
No comments:
Post a Comment