Próbuję ponownie napisać mój projekt czasu wolnego z Javy do Kotlin (aby go zrozumieć) i napotkałem kilka problemów. Badania przyniósł mi do { function() }
ale to mi nie pomagaAnonimowe zajęcia z lambdami w Kotlin
w Javie Mam ten interfejs:
public interface Shuffling<T> {
List<T> shuffle(List<T> list, ShuffleCallback callback);
interface ShuffleCallback {
void onShuffle(int addedTo, int randomIndex);
}
}
I Próbuję dodać obiekt testowy do listy algorytmów tasowania w Kotlin:
val algoList = ArrayList<Shuffling<Int>>()
algoList.add(Shuffling { list, callback -> {
Timber.d("Test!")
ArrayList<Int>() // how to return this value?
}})
Jak dodać kilka linii do funkcji lambda?
Mam także inny przykład z kłopotów: Interfejs
Kotlin:
interface Drawable {
fun draw()
}
i wdrożenie Kotlin:
private val drawList = ArrayList<Drawable>()
//...
drawList.add(Drawable {glDrawArrays(GL_TRIANGLE_FAN, startVertex, numVertices)})
Wcześniej używałem tylko:
mDrawList.add(() -> glDrawArrays(GL_TRIANGLE_FAN, startVertex, numVertices));
I wszystko było w porządku.
Próbowałem utworzyć tasowanie lambda, aby przetestować działanie lambdas w kotlinach. –
@AntonShkurenko czy to działa? – voddan
1) Czy mogę dodać wiele linii? Ostatni wiersz zwróci wartość? Ale co jeśli użyję jeśli/else? 2) Jeśli ponownie napiszę interfejs do interfejsu java, będę mógł używać lamdas? Albo jak to zrobić z Kotlinem? Naprawdę lubię nie pisać tego obiektu, przesłonić, itp. –