ich eine Hilfsmethode buildChain
erstellt haben, die im wesentlichen eine Kette von Objekten schafft gegeben, dass sie die Schnittstelle IChain<T>
und stellen Sie die Verträge next
MitgliedSimpler oder mehrere funktionelle Art und Weise Objekte in Kotlin von Verkettungs
Der Kodex umzusetzen
interface Chain<T> {
var next: T?
operator fun plus(next: T): T?
}
fun <T : Chain<T>> buildChain(first: T, vararg members: T): T {
var next: T? = null
members.forEachIndexed { i, t ->
if (i == 0) {
next = first + t
} else {
next = next?.run { this + t }
}
}
return first
}
Implementierung Beispiel
data class Person(val name: String) : Chain<Person> {
override var next: Person? = null
override fun plus(next: Person): Person? {
this.next = next
return next
}
}
fun createPersonChain()
= buildChain(Person("Bob"), Person("Bitzy"), Person("Blitzy"))
implementaion Ausgabebeispiel
@JvmStatic fun main(args: Array<String>) {
var first = createPersonChain()
// first.name = "Bob"
// first.next.name = "Bitzy"
// first.next.next.name = "Blitzy"
}
Gibt es eine functional
oder simpler
Weg, um die code
oben halten die implementaion Nutzung das gleiche für Acheiving?
Dank Hotkey funktioniert wie ein Charme, lustige Sache ist, ich habe gerade die Faltfunktion im ganzen heute gelernt und wusste nicht, es könnte in Kombination mit dem Chaining-Code verwendet werden –