कौन सा समाधान बेहतर है? निरर्थक लैम्ब्डा का उपयोग करें या खाली पैराम्बा को डिफ़ॉल्ट पैरामीटर के रूप में पास करें? कोटलिन किसी भी तरह से खाली लैम्ब्डा अनुकूलित करेगा? या नया उदाहरण बनाओ जो कुछ भी नहीं करता?शून्य या खाली लैम्बडा डिफ़ॉल्ट मान के रूप में
class Test1(val action:() -> Unit = {})
दुर्भाग्य से मैं बाइट कोड उत्पन्न समझ में नहीं आता। विश्लेषण
val test11 = Test1()
देता है के बाद decompilation हमें
private static final Test1 test11 = new Test1((Function0)null, 1, (DefaultConstructorMarker)null);
देता है और अंत में के रूप में एक लैम्ब्डा पारित हो जाता है की तरह इस
var1 = (Function0)null.INSTANCE;
संपादित कुछ: छिपा सवाल है : कोटलिन कैसे खाली व्यवहार करता है डिफ़ॉल्ट मूल्य के रूप में lambda?
कौन सा समाधान बेहतर है इस पर निर्भर करता है कि आप क्या हासिल करने या अनुकूलित करने की कोशिश कर रहे हैं? – miensol
मैं अनावश्यक, खाली उदाहरण नहीं लेना चाहता हूं। मुझे पता है कि सबसे आसान समाधान है कि लम्बाडा को कम करने के लिए, लेकिन इसका मतलब बदसूरत निर्माण '' 'कार्रवाई है .invoke()' ''। –
@ PawełByszewski '' 'क्लास टेस्ट 1 (वैल एक्शन:() -> यूनिट = {})' '' के बारे में आपकी क्या चिंताएं हैं? – ruX