Sto provando a riscrivere il mio progetto di tempo libero da Java a Kotlin (per capirlo) e ho incontrato alcuni problemi. Le ricerche mi hanno portato a { function() }
ma non mi ha aiutatoClassi anonime con lambda a Kotlin
In Java ho questa interfaccia:
public interface Shuffling<T> {
List<T> shuffle(List<T> list, ShuffleCallback callback);
interface ShuffleCallback {
void onShuffle(int addedTo, int randomIndex);
}
}
E sto cercando di aggiungere oggetto di prova nella lista algoritmi strascicati in Kotlin:
val algoList = ArrayList<Shuffling<Int>>()
algoList.add(Shuffling { list, callback -> {
Timber.d("Test!")
ArrayList<Int>() // how to return this value?
}})
Come aggiungere più righe alla funzione di lambda?
Anche io ho un altro esempio con problemi: l'interfaccia
Kotlin:
interface Drawable {
fun draw()
}
e l'attuazione Kotlin:
private val drawList = ArrayList<Drawable>()
//...
drawList.add(Drawable {glDrawArrays(GL_TRIANGLE_FAN, startVertex, numVertices)})
In precedenza ho usato solo:
mDrawList.add(() -> glDrawArrays(GL_TRIANGLE_FAN, startVertex, numVertices));
E tutto andava bene.
Ho provato a creare un'istanza lambda di mischiare, solo per verificare come funzionano i lambdas in kotlin. –
@AntonShkurenko ha funzionato? – voddan
1) Sono in grado di aggiungere linee multiple? L'ultima riga restituirà il valore? Ma cosa succede se uso se/else? 2) Se riesco a riscrivere l'interfaccia su quella di java, sarò in grado di usare lamdas? O come farlo con Kotlin? Mi piace molto non scrivere questo oggetto, eseguire l'override, ecc. –