1
考慮下面的代碼,以獲得一個不錯的列表中的所有賬號的名單我必須做到以下幾點:科特林相當於常規spead點(。*)
data class Customer(val accounts : List<Account>)
data class Account(val number : String)
fun getCustomers() = arrayListOf(
Customer(
arrayListOf(Account("1"),Account("2"))
),
Customer(
arrayListOf(Account("3"),Account("4"))
)
)
fun main(args: Array<String>) {
// long
println(getCustomers().map{ it.accounts }.flatten().map{ it.number })
// a little shorter (just discovered while typing the question)
println(getCustomers().flatMap{ it.accounts }.map{ it.number })
在Groovy中給出了相同的類結構我可以這樣做:
println(getCustomers()*.accounts*.number.flatten())
// or even
println(getCustomers().accounts.number.flatten())
哪個更好一點。是否有可能「創建」一個運算符(比如說*)以類似於Groovy版本?