Iterable<T>相關函式
Functional Programming
原本的集合不會動到,複製一份給其它函式去執行,傳回新的結果。
Iterable.map()
擴展函式程式碼如下:
1
2
3
public inline fun <T, R> Iterable<T>.map(transform: (T) -> R): List<R> {
return mapTo(ArrayList<R>(collectionSizeOrDefault(10)), transform)
}
集合元素字串長度
Iterable
以下程式碼會傳回list元素的長度,傳回新的list,不會修改到原本的list。
it代表每個集合元素。
1
2
3
4
5
fun main() {
val list = listOf<String>("Mary", "Bill", "Alex", "Ben")
val result = list.map { it.length }
println(result)
}
[4, 4, 4, 3]
加上前綴字串
以下程式碼為每個元素加上前綴字串,不會修改原本list,會複製一份新的list,修改複本傳回。
1
2
3
4
5
6
fun main() {
val list = listOf<String>("Mary", "Bill", "Alex", "Ben")
.map { "Little " + it }
.map { "Happy " + it }
println(list)
}
[Happy Little Mary, Happy Little Bill, Happy Little Alex, Happy Little Ben]