छोड़ सकते हैं
निम्नलिखित फ़ंक्शन को परिभाषित करता है जो फ़ंक्शन स्वीकार करता है, और यदि कोई भी आपूर्ति नहीं की जाती है तो पास किए गए फ़ंक्शन के लिए डिफ़ॉल्ट मान निर्दिष्ट करता है।
fun foobar(fn: (a: Int, b: Int) -> Int = { a: Int, b: Int -> if (a > b) a else b }) {
println(fn(42, 99))
}
आप अपनी खुद की कार्यों पारित कर सकते हैं:
val min = { a: Int, b: Int -> if (a <= b) a else b }
foobar(min)
val max = { a: Int, b: Int -> if (a > b) a else b }
foobar(max)
आप समारोह को छोड़ सकते हैं और सामान्य का प्रयोग:
foobar()
वैकल्पिक रूप से आप के रूप में मानक पुस्तकालय maxOf
समारोह का उल्लेख कर सकते डिफ़ॉल्ट, अपना खुद का लिखने के बजाय:
fun foobar(fn: (a: Int, b: Int) -> Int = ::maxOf) {
println(fn(42, 99))
}
स्रोत
2017-07-04 09:28:08
आप इस लैम्ब्डा को क्या पास करना चाहते हैं? – zsmb13
साइड नोट, जेडीके में पहले से ही 'अधिकतम' फ़ंक्शन उपलब्ध है, जो 'Math.max (a, b)' के माध्यम से सुलभ है, जो वही काम करता है। – Robin
हालांकि, आपके प्रश्न के बारे में, मैं वास्तव में समझ नहीं पा रहा हूं कि आप क्या पूछ रहे हैं - आप 'अधिकतम' को किसी भी फ़ंक्शन कॉल के सामान्य तर्क के रूप में पास कर सकते हैं जो ''Int, Int) -> Int' के फ़ंक्शन को लेता है। – Robin