मैं एक सहायक विधि buildChain
जो अनिवार्य रूप से है कि वे इंटरफ़ेस IChain<T>
लागू दिया वस्तुओं की एक श्रृंखला बनाता है बनाया है और ठेके next
सदस्यसरल या अधिक कार्यात्मक रास्ता
कोड निर्धारित किया है
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
}
कार्यान्वयन उदाहरण
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 उत्पादन उदाहरण
@JvmStatic fun main(args: Array<String>) {
var first = createPersonChain()
// first.name = "Bob"
// first.next.name = "Bitzy"
// first.next.next.name = "Blitzy"
}
वहाँ implementaion उपयोग ही रखते हुए ऊपर code
प्राप्त करने के लिए एक functional
या simpler
रास्ता नहीं है?
धन्यवाद हॉटकी एक आकर्षण की तरह काम करता है, अजीब बात यह है कि मैं सिर्फ गुना समारोह आज के दौरान सीखे गए है और यह श्रृंखलन कोड के साथ संयोजन में इस्तेमाल किया जा सकता का एहसास नहीं था –