2015-09-16 16 views
5

Wygląda na to, że nie mogę użyć referencji do metody dla obiektu w Kotlin. Ta funkcja istnieje w Javie.Kotlin: Odniesienie do metody nie działa?

Na przykład w Javie jakbym zapętlenie poprzez ciąg dołączyć każdy znak do pisarza:

string.forEach(writer::append);

Ale w Kotlin przy użyciu tej samej składni nie działa, ponieważ:

enter image description here

+2

Są to osobne języki. Dlaczego miałbyś oczekiwać, że funkcja jednego z nich automatycznie zadziała w innym? – yshavit

+0

Myślałem, że dodali odpowiednie referencje do metod kilka miesięcy temu. Jest to niezbędna cecha, która ratuje bojler i na tym właśnie polega Kotlin. – Jire

+2

Mogli, ja naprawdę nie znam Kotlina. Ale nie rozumiem związku z Javą, ponieważ to pytanie w całości dotyczy Kotlina. Czy sprawdziłeś dokumenty [na temat referencji do funkcji] (http://kotlinlang.org/docs/reference/reflection.html#function-references)? – yshavit

Odpowiedz

11

Na razie Kotlin obsługuje tylko odniesienia do funkcji najwyższego poziomu i lokalnych oraz członków klas, a nie indywidualnych insta nces. Zobacz dokumentację here.

Tak, można powiedzieć Writer::append i dostać funkcję Writer.(Char) -> Writer, ale biorąc instancji writer i mówiąc writer::append uzyskać funkcję (Char) -> Writer nie jest obsługiwana w tym momencie.

+1

Dzięki! Czy są plany, aby dodać tę funkcję w przyszłej wersji Kotlin? – Jire

+1

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

Powiązane problemy