मेरे पास जेपीए में तारों के लिए मैप किए गए स्कैला में एक गणना है। अधिक आरामदायक कोडिंग के लिए, मैंने उनके बीच निहित रूपांतरण परिभाषित किया। तो अब मैं मूल्य val person.role = "User"
परिभाषित कर सकता हूं, - person.role
गणना प्रकार एक स्ट्रिंग है इसलिए रूपांतरण है। लेकिन जब मैं इन दोनों की तुलना करने की कोशिश करता हूं, तो मुझे हमेशा झूठा लगता है, क्योंकि def equals (arg0: Any) : Boolean
Any
लेता है इसलिए कोई रूपांतरण ट्रिगर नहीं होता है। मुझे कुछ स्पष्ट रूपांतरण की ज़रूरत है, लेकिन मेरी योजना को छोड़ने में सक्षम होना था, आपको क्या लगता है कि सबसे अच्छा अभ्यास है यहाँ सबसे साफ समाधान?स्ट्रिंग और गणना की तुलना
उत्तर
Value("User")
आपके Enumeration
में Val
प्रकार का है। और मेरा मानना है कि यह equals
का कार्यान्वयन मूल्य के स्ट्रिंग नाम की तुलना नहीं करता है। मुझे लगता है कि ऐसा करने का एक भारी हाथ तरीका अपना खुद का Enumeration
और Val
बना रहा है ताकि नाम मिलान होने पर यह सच हो जाए।
लेकिन मेरे कोड में, जेपीए के साथ नहीं, मैं हमेशा स्ट्रिंग को MyEnumeration.Value
में परिवर्तित करता हूं।
object E extends Enumeration { val User = Value("User") }
scala> val a = E.withName("User")
a: E.Value = User
नोट जब withName
का उपयोग कर, अगर स्ट्रिंग गणन में किसी भी नाम से मेल नहीं खाता है कि आप एक अपवाद प्राप्त: इस तरह की बातें करना आसान है।
तो हमेशा अपने तुलना में शुमार क्षेत्रों का उपयोग करें:
scala> a == E.User
res9: Boolean = true
जेपीए केवल एक स्ट्रिंग देता है, और वहाँ उसके चारों ओर कोई रास्ता नहीं है। तो मुझे लगता है कि सबसे अच्छा विकल्प या तो स्ट्रिंग को स्ट्रिंग और मिलान स्ट्रिंग में कनवर्ट करना है, या स्ट्रिंग को वैल में अपग्रेड करना और वैल की तुलना करना है। इन प्रकारों को मिलाकर तुलना के लिए काम नहीं करेगा, जब तक कि आप equals
विधि में किसी प्रकार का एक्सटेंशन लागू नहीं करते हैं, और यह मुश्किल है।
, थॉमस के जवाब में विस्तार करते हुए आप शाखा की तुलना उपयोग कर रहे हैं, पैटर्न मिलान का उपयोग कर अधिक उपयुक्त हो सकता:
object Role extends Enumeration {
val User = MyValue("User")
val Admin = MyValue("Admin")
def MyValue(name: String): Value with Matching =
new Val(nextId, name) with Matching
// enables matching against all Role.Values
def unapply(s: String): Option[Value] =
values.find(s == _.toString)
trait Matching {
// enables matching against a particular Role.Value
def unapply(s: String): Boolean =
(s == toString)
}
}
फिर आप के रूप में उपयोग कर सकते हैं इस प्रकार है:
def allowAccess(role: String): Boolean = role match {
case Role.Admin() => true
case Role.User() => false
case _ => throw ...
}
या
// str is a String
str match {
case Role(role) => // role is a Role.Value
case Realm(realm) => // realm is a Realm.Value
...
}
- 1. स्कैला मैच/गणना की तुलना
- 2. डीजेंगो टेम्पलेट स्ट्रिंग की तुलना
- 3. व्यक्तिगत वर्णों की स्ट्रिंग तुलना और वर्णमाला क्रम
- 4. जावा में स्ट्रिंग तुलना और स्ट्रिंग इंटर्निंग
- 5. बैश, डैश और स्ट्रिंग तुलना
- 6. पता तुलना और स्ट्रिंग भंडारण
- 7. मैं जावास्क्रिप्ट में स्ट्रिंग और बूलियन की तुलना कैसे करूं?
- 8. यादृच्छिक स्ट्रिंग में अंग्रेजी शब्दों की गणना
- 9. लिनक्स खोल प्रोग्रामिंग स्ट्रिंग सिंटैक्स की तुलना
- 10. सी ++ दो स्ट्रिंग अक्षरों की तुलना करें
- 11. कोको में स्ट्रिंग की तुलना करना
- 12. सी ++ की तुलना करें चार सरणी स्ट्रिंग
- 13. चार सूचक में स्ट्रिंग इटरेटर की तुलना
- 14. सुरक्षित स्ट्रिंग फ़ंक्शन की तुलना करें
- 15. दो समान स्ट्रिंग की तुलना PHP
- 16. स्ट्रिंग की तुलना में मेरी स्ट्रिंग क्यों विफल रही है?
- 17. गणना एक स्ट्रिंग दिखाए जाने की एक स्ट्रिंग
- 18. एक GUID कास्ट और तुलना एक स्ट्रिंग तुलना बनाम
- 19. MYSQL गणना की गणना
- 20. स्ट्रिंग के साथ स्ट्रिंग की तुलना कैसे करें *?
- 21. किसी सिस्टम में मानों की तुलना/गणना करें। चयन .अरेलेलिस्ट
- 22. तुलना संख्या और इसकी स्ट्रिंग प्रस्तुति
- 23. अजीब PHP स्ट्रिंग इंटीजर तुलना और रूपांतरण
- 24. टाइमस्टैम्प और स्वाइप की गणना
- 25. INotifyPropertyChanged और गणना की संपत्ति
- 26. दो तारों की तुलना और सबसे समान
- 27. स्ट्रिंग की पिक्सेल लंबाई की गणना करने का कोई तरीका?
- 28. आईपीसी की गति और तुलना
- 29. एसबीटी और ग्रैडल की तुलना
- 30. सी # में एक स्ट्रिंग की प्रदर्शन चौड़ाई की गणना करें?
क्या आप इस गणना को 'गणना' और 'मूल्य' पर आधारित कर रहे हैं? – Thomas
@ थॉमस हां मैं स्कैला के 'स्काला' एनीमेशन 'और' स्कैला 'का उपयोग कर रहा हूं। गणना। वैल्यू – coubeatczech
तुलना के लिए संदर्भ/उपयोग केस क्या है? पैटर्न मिलान एक बेहतर समाधान प्रदान कर सकता है, लेकिन यह वास्तव में उस पर निर्भर करता है जो आप पूरा करने की कोशिश कर रहे हैं। –