2017-12-25 4 views
1

Von der Kotlin Koan Frage ( https://github.com/Kotlin/kotlin-koans/blob/master/src/ii_collections/n16FlatMap.kt) habe ich diesen Koan-Code. Wie lese ich das? Es sieht aus wie eine Variable mit val, aber es ist eine Funktion mit () und {}.val ... get() {...} in Kotlin

val Customer.orderedProducts: Set<Product> get() { 
    // Return all products this customer has ordered 
    todoCollectionTask() 
} 
+1

sieht aus wie ein impliziter Getter – njzk2

+1

bei https://kotlinlang.org/docs/reference/properties.html Dokumentierte. –

Antwort

3

Es ist eine schreibgeschützte berechnet Erweiterungseigenschaft. Die Methode get wird verwendet, um den Wert zu berechnen.

Es kann somit verwendet werden:

yourCustomer.orderedProducts.first() 
       //^You're implicitly calling the get() method. 
0

Es scheint die Möglichkeit zu geben, die Mitglieder als Eigenschaft zu verarbeiten. In diesem Beispiel kann ich die Zeichenfolge aus der Customer.orderedProducts-Eigenschaft abrufen.

data class Customer(val name: String, val orders: List<String>) 

val Customer.orderedProducts: String get() { 
    return this.orders.joinToString() 
} 

fun main(args: Array<String>) { 
    val c = Customer("hello", arrayListOf("A", "B")) 
    println(c.orderedProducts) 
    println(c.orders) 
} 

Dies sind Ausgangswerte.

A, B 
[A, B]