स्कैला 2.10 में, someDouble.isNaN
बॉक्स से अपेक्षित है? मेरे कोड को .isNaN
पर एक डिकंपेलर के माध्यम से कॉल करना, मैं अभी भी अपने कोड में double2Double
पर बताता हूं। 2.10 में नए AnyVal
काम को देखते हुए, मुझे उम्मीद है कि यह java.lang.Double.isNaN(someDouble)
से रनटाइम पर कोई भी नकली आवंटन नहीं होगा। क्या मैं कुछ भूल रहा हूँ?स्कैला 2.10, डबल.इसएनएएन, और मुक्केबाजी
5
A
उत्तर
6
दुर्भाग्य से, isNaN
java.lang.Double
पर एक विधि है, और यह java.lang.Double
को एक अंतर्निहित रूपांतरण के लिए आवश्यक है, इसलिए स्काला RichDouble
मूल्य वर्ग isNaN
reimplement नहीं कर सकते हैं तेजी से हो सकता है, और जब आप का उपयोग isNaN
आप java.lang.Double
के बॉक्स।
के बाद से इस NaN
के लिए परीक्षण करने के लिए केवल धीमी या अजीब तरीके छोड़ देता है, मैं
implicit class RicherDouble(val d: Double) extends AnyVal {
def nan = java.lang.Double.isNaN(d)
}
को परिभाषित करने और उसके बाद मैं सिर्फ जांच करने के लिए .nan
उपयोग कर सकते हैं।
संबंधित मुद्दे
- 1. स्कैला 2.10 और पैकेज प्रतिबिंब
- 2. स्कैला 2.10 टाइपटाग उपयोग
- 3. स्कैला मैक्रोज़ (2.10)
- 4. स्कैला 2.10 प्रतिबिंब एपीआई
- 5. स्कैला 2.10 मीलस्टोन
- 6. स्कैला 2.10 प्रतिबिंब
- 7. स्कैला 2.10 एएसटी
- 8. शुरुआती: स्कैला 2.10 में स्कैला प्रकार उपनाम?
- 9. स्कैला 2.10, Iterator.size में बग?
- 10. स्कैला में __FUNC__ मैक्रो 2.10
- 11. 2.10
- 12. स्कैला 2.10 में, आप टाइपटाग
- 13. typesafe ढेर और स्काला 2.10
- 14. स्कैला 2.10 प्रतिबिंब, मैं केस क्लास
- 15. स्कैला 2.10 में संभावित बग: फ्यूचर्स
- 16. स्कैला एपीआई 2.10। *: फंक्शन 2.और फिर क्या हुआ?
- 17. रैपर और स्वत: मुक्केबाजी
- 18. Enum मुक्केबाजी और समानता
- 19. जावा ने शून्य और मुक्केबाजी
- 20. स्कैला 2.10 में प्रतिबिंब के माध्यम से टाइप पैरामीटर ढूँढना?
- 21. ग्रोवी ++ (नवीनतम 0.9.1?) बनाम स्कैला की तुलना (नवीनतम 2.10)
- 22. एक विघटित स्कैला कोड में मुक्केबाजी/अनबॉक्सिंग को कैसे पहचानें?
- 23. क्या स्कैला केस क्लास एनोटेशन 2.10 में बदल गया था?
- 24. स्केलिंग 2.10 मैक्रोज़
- 25. स्कैला 2.10 भविष्य को scalaz.concurrent में बदलें। भविष्य // कार्य
- 26. आरएसपीसी 2.10
- 27. मोनो 2.10
- 28. ऑब्जेक्ट मुक्केबाजी में अंतर/सी # और वीबी.Net
- 29. फ्यूचर्स.एटैट स्केल में सभी प्रतिस्थापन 2.10
- 30. डैगर 2.10 एंड्रॉइड सबकंपोनेंट्स और बिल्डर्स
यह मुक्केबाजी से दोगुना तेज क्यों होना चाहिए? – gzm0
@ gzm0 - क्योंकि यह "बक्से" एक मान वर्ग (जो कि 'AnyVal' भाग को बढ़ाता है) है, जो वास्तव में तब तक नहीं बनाया जाता है जब तक कि आपको इसे ऑब्जेक्ट या जेनेरिक के रूप में पास करने की आवश्यकता नहीं होती है या उसे सरणी में डाल दिया जाता है। यदि आप इसका उपयोग करते हैं (जैसे आप यहां हैं), स्कैला बाइटकोड उत्सर्जित करता है जो कि केवल एक विधि कॉल है, क्योंकि वास्तव में ऐसा कुछ भी नहीं है जिसके लिए वास्तविक वस्तु मौजूद हो। –
क्या आपके 'रिचर्ड डबल' के लिए उच्च प्राथमिकता निहित नहीं हो सकता है, उसी पर 'isNaN' नाम' के साथ? या यदि नहीं, तो अस्पष्टता के साथ विफल होने के लिए एक ही प्राथमिकता में से कुछ को याद दिलाने के लिए खुद को याद दिलाएं कि उस विधि को तंग लूप में उपयोग न करें। –