Spread Operator क्या है
In this page:
fun functionName(vararg items: Type) { }
functionName(a, b, c)
functionName(*array) // spread an array
functionName(*list.toTypedArray())
Declaring a vararg Function
vararg चिह्नित एक parameter उस type के किसी भी संख्या में individual arguments accept करता है, जो function के अंदर एक array के रूप में उपलब्ध होते हैं।
उदाहरण: Declaring a vararg Function
// Define the function `sumAll` taking `numbers` and returning an Int
fun sumAll(vararg numbers: Int): Int {
// Return `numbers.sum()` from this function
return numbers.sum()
}
// Entry point: execution of the program starts here
fun main() {
// Print "Sum: ${sumAll(1, 2, 3, 4)}" to the console, with a trailing newline
println("Sum: ${sumAll(1, 2, 3, 4)}")
}
Login to try C/C++/Java/PHP code in the editor
Spreading an Array into vararg
जब आपके पास पहले से एक array हो और आप इसके contents को individual arguments के रूप में किसी vararg parameter को पास करना चाहें, इसे * से prefix करें -- यह spread operator है।
उदाहरण: Spreading an Array into vararg
// Define the function `sumAll` taking `numbers` and returning an Int
fun sumAll(vararg numbers: Int): Int {
// Return `numbers.sum()` from this function
return numbers.sum()
}
// Entry point: execution of the program starts here
fun main() {
// Declare a read-only variable `values`, set to `intArrayOf(10, 20, 30)`
val values = intArrayOf(10, 20, 30)
// Print "Sum: ${sumAll(*values)}" to the console, with a trailing newline
println("Sum: ${sumAll(*values)}")
}
Login to try C/C++/Java/PHP code in the editor
Spreading a List
चूंकि spread operator arrays पर काम करता है, किसी List को किसी vararg parameter में फैलाने से पहले पहले .toTypedArray() से convert करना चाहिए।
उदाहरण: Spreading a List
// Define the function `joinAll` taking `words` and returning a String
fun joinAll(vararg words: String): String {
// Return `words.joinToString(" ")` from this function
return words.joinToString(" ")
}
// Entry point: execution of the program starts here
fun main() {
// Declare a read-only variable `wordList`, set to `listOf("Hello", "from", "Kotlin")`
val wordList = listOf("Hello", "from", "Kotlin")
// Print `joinAll(*wordList.toTypedArray())` to the console, with a trailing newline
println(joinAll(*wordList.toTypedArray()))
}
Login to try C/C++/Java/PHP code in the editor
Combining Spread with Other Arguments
एक spread array को उसी call में अतिरिक्त individual arguments के साथ मिलाया जा सकता है, जब तक overall argument order अब भी function की उम्मीद से मेल खाए।
उदाहरण: Combining Spread with Other Arguments
// Define the function `sumAll` taking `numbers` and returning an Int
fun sumAll(vararg numbers: Int): Int {
// Return `numbers.sum()` from this function
return numbers.sum()
}
// Entry point: execution of the program starts here
fun main() {
// Declare a read-only variable `values`, set to `intArrayOf(1, 2, 3)`
val values = intArrayOf(1, 2, 3)
// Print "Sum: ${sumAll(0, *values, 100)}" to the console, with a trailing newline
println("Sum: ${sumAll(0, *values, 100)}")
}
Login to try C/C++/Java/PHP code in the editor
- किसी array को
varargparameter पास करते समय*prefix भूल जाना, एक type mismatch का कारण बनते हुए क्योंकि एक single array कई individual arguments जैसा नहीं है। - किसी
Listको सीधे फैलाने की कोशिश करना; spread operator arrays पर काम करता है, इसलिए किसीListको पहले.toTypedArray()से convert करना चाहिए। - यह मान लेना कि spread को गलत order वाले दूसरे individual arguments के साथ मिलाया जा सकता है; किसी spread से पहले/बाद के अतिरिक्त positional arguments को अब भी parameter order rules का सम्मान करना चाहिए।
*(spread) operator किसी array कोvarargparameter के लिए individual arguments में unpack करता है।*के बिना, किसी array को सीधेvarargparameter पास करना एक type mismatch है।- किसी
Listको फैलाने से पहले पहले.toTypedArray()से एक array में convert करना चाहिए। - Spread arguments को उसी call में अतिरिक्त individual arguments के साथ combine किया जा सकता है।
Chapter Quiz — Complete all 7 topics to unlock
0/7 topics done
Complete these topics first: