खोज…


वाक्य - विन्यास

  • स्पष्ट पैरामीटर:

  • {पैरामीटरनाम: पैरामीटरटाइप, अन्यपैरामीटरनाम: अन्यपैरमीटाइप -> aExpression ()}

  • अधिमान्य पैरामीटर:

  • वैल जोड़: (इंट, इंट) -> इंट = {ए, बी -> ए + बी}

  • सिंगल पैरामीटर it शॉर्टहैंड

  • वैल स्क्वायर: (इंट) -> इंट = {इट * इट}

  • हस्ताक्षर:

  • () -> परिणाम

  • (InputType) -> ResultType

  • (InputType1, InputType2) -> परिणाम

टिप्पणियों

इनपुट प्रकार के मापदंडों को तब छोड़ा जा सकता है जब उन्हें संदर्भ से बाहर निकाला जा सकता है। उदाहरण के लिए, मान लीजिए कि आपके पास एक फ़ंक्शन है जो एक फ़ंक्शन लेता है:

data class User(val fistName: String, val lastName: String) {
    fun username(userNameGenerator: (String, String) -> String) =
        userNameGenerator(firstName, secondName)
}

आप इस फ़ंक्शन का उपयोग लंबोदा पास करके कर सकते हैं, और चूंकि पैरामीटर पहले से ही फ़ंक्शन हस्ताक्षर में निर्दिष्ट हैं, इसलिए मेमने की अभिव्यक्ति में उन्हें फिर से घोषित करने की आवश्यकता नहीं है:

val user = User("foo", "bar")
println(user.userName { firstName, secondName ->
     "${firstName.toUppercase}"_"${secondName.toUppercase}"
 }) // prints FOO_BAR

यह तब भी लागू होता है जब आप एक लैम्बडा को एक वैरिएबल को सौंप रहे होते हैं:

//valid:
val addition: (Int, Int) = { a, b -> a + b }
//valid:
val addition = { a: Int, b: Int -> a + b }
//error (type inference failure):
val addition = { a, b -> a + b }

जब लैम्बडा एक पैरामीटर लेता है, और प्रकार को संदर्भ से अनुमान लगाया जा सकता है, तो आप it द्वारा पैरामीटर का उल्लेख कर सकते हैं।

listOf(1,2,3).map { it * 2 } // [2,4,6]

फिल्टर कार्य करने के लिए पैरामीटर के रूप में लैम्ब्डा

val allowedUsers = users.filter { it.age > MINIMUM_AGE }

लैम्बडा एक चर के रूप में पारित हुआ

val isOfAllowedAge = { user: User -> user.age > MINIMUM_AGE }
val allowedUsers = users.filter(isOfAllowedAge)

एक समारोह कॉल बेंचमार्किंग के लिए लैम्ब्डा

किसी कार्य को चलाने में कितना समय लगता है, इसके लिए सामान्य प्रयोजन वाली स्टॉपवॉच:

object Benchmark {
    fun realtime(body: () -> Unit): Duration {
        val start = Instant.now()
        try {
            body()
        } finally {
            val end = Instant.now()
            return Duration.between(start, end)
        }
    }
}

उपयोग:

val time = Benchmark.realtime({
    // some long-running code goes here ...
})
println("Executed the code in $time")


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow