2015-09-16 16 views
5

Sembra che non sia possibile utilizzare un riferimento al metodo di un oggetto in Kotlin. Questa funzione esiste in Java.Kotlin: il riferimento al metodo non funziona?

Per esempio in Java se stavo scorrendo una stringa da aggiungere ogni personaggio per uno scrittore:

string.forEach(writer::append);

Ma nel Kotlin utilizzando la stessa sintassi non funziona perché:

enter image description here

+2

Sono lingue separate. Perché dovresti aspettarti che una funzionalità in una funzioni automaticamente in un'altra? – yshavit

+0

Ho pensato che avessero aggiunto riferimenti al metodo corretto alcuni mesi fa. È una caratteristica necessaria che salva il boilerplate e questo è ciò di cui parla Kotlin. – Jire

+2

Possono avere, non conosco davvero Kotlin. Ma non capisco la connessione a Java, poiché questa domanda riguarda appieno Kotlin. Hai controllato i documenti [sui riferimenti alle funzioni] (http://kotlinlang.org/docs/reference/reflection.html#function-references)? – yshavit

risposta

11

Per ora, Kotlin supporta solo i riferimenti alle funzioni di livello superiore e locali e ai membri delle classi , non individuale NCES. Vedi i documenti here.

Quindi, si può dire Writer::append e ottenere una funzione Writer.(Char) -> Writer, ma prendendo un'istanza writer e dicendo writer::append per ottenere una funzione (Char) -> Writer non è supportato al momento.

+1

Grazie! Ci sono piani per aggiungere la funzione in una futura versione di Kotlin? – Jire

+1

https://youtrack.jetbrains.com/issue/KT-6947 – D3xter

Problemi correlati