2017-03-29 3 views
5

Beim Versuch, einen Setter zu definieren, die einen Parametertyp akzeptiert, die verwendet werden können, eine Eigenschaft zu konstruieren, so:Setter in Kotlin Überlastung

class Buffer(buf: String) {} 

class Foo { 
    var buffer: Buffer? = null 
     set(value: String) { 
      field = Buffer(value) 
     } 
} 

erhalte ich die Fehlermeldung:

Setter Parameter Typ muss gleich dem Typ der Eigenschaft sein

Also was soll der Kotlin Weg sein, dies zu tun?

Antwort

3

Ab Kotlin 1.1 ist es nicht möglich, Property Setter zu überlasten. Das Feature-Request wird hier verfolgt:

val String.buffer : Buffer 
    get() = Buffer(this) 

und setzen Sie den Wert mit

Foo().buffer = "123".buffer 
:

https://youtrack.jetbrains.com/issue/KT-4075

Derzeit würden Sie eine buffer Erweiterungsfunktion auf String definieren müssen

Verwandte Themen