में विकल्प का उपयोग करने के लिए बेवकूफ तरीका मैं कुछ जावा कोड को स्कैला में परिवर्तित कर रहा हूं, कोड को यथासंभव मुहावरे बनाने की कोशिश कर रहा हूं।स्काला
तो, अब मेरे पास शून्य कोडों के बजाय विकल्पों का उपयोग करके कुछ कोड है, और मुझे आश्चर्य है कि चीजें स्केलिश हैं या मैं गलत हूं या नहीं। तो, क्या आप कृपया कोड के निम्नलिखित स्निपेट की आलोचना कर सकते हैं?
जिन क्षेत्रों में मैं विशेष रूप से प्रतिक्रिया के लिए देख रहा हूँ कर रहे हैं:
- एक कारखाने के रूप में एक साथी वस्तु का उपयोग करते हैं, 2 विकल्प हम विकल्प या स्ट्रिंग्स पास करना चाहते हैं, इस आधार पर दे रही है: स्ट्रिंग निर्माता है ठीक है, या क्या हमें हमेशा इस तथ्य का पर्दाफाश करना चाहिए कि यह एक विकल्प है?
- पूर्व शर्त का उपयोग: क्या इस तथ्य को ज़ोर देने के बेहतर तरीके हैं कि अल्फा 3 कोड और नाम अनिवार्य हैं, और अल्फा2Cोड के लिए एक गैर-शून्य विकल्प पारित होना चाहिए? (मैं स्ट्रिंग यूटिल के लिए Guava का सहारा ले रहा हूं, क्योंकि मुझे स्कैला एपीआई में कुछ भी नहीं मिला है)
- हैशकोड, बराबर और टूस्ट्रिंग का कार्यान्वयन। गुवा में फिर से बराबर और toString प्रतिनिधि, जबकि बराबर पैटर्न मिलान का उपयोग करता है। क्या कोई और अधिक तरीका है?
- मुझे पता है कि मैं केस क्लास का उपयोग कर सकता था, जो डिफ़ॉल्ट कार्यान्वयन करता था, लेकिन मुझे ज्यादातर सीखने में दिलचस्पी है कि मुझे उन मामलों के लिए कैसे लागू करना चाहिए जहां केस कक्षाओं का उपयोग नहीं किया जा सकता है।
बहुत बहुत धन्यवाद!
package com.sirika.openplacesearch.api.language
import com.google.common.base.Objects
import com.google.common.base.Strings
object Language {
def apply(name : String, alpha3Code : String, alpha2Code : Option[String]) = new Language(name, alpha3Code, alpha2Code)
def apply(name : String, alpha3Code : String, alpha2Code : String = null) = new Language(name, alpha3Code, Option(alpha2Code))
def unapply(l : Language) = Some(l.name, l.alpha3Code, l.alpha2Code)
}
class Language(val name : String, val alpha3Code : String, val alpha2Code : Option[String]) {
require(!Strings.isNullOrEmpty(alpha3Code))
require(!Strings.isNullOrEmpty(name))
require(alpha2Code != null)
override def hashCode(): Int = Objects.hashCode(alpha3Code)
override def equals(other: Any): Boolean = other match {
case that: Language => this.alpha3Code == that.alpha3Code
case _ => false
}
override def toString() : String = Objects.toStringHelper(this)
.add("name", name)
.add("alpha3", alpha3Code)
.add("alpha2", alpha2Code)
.toString()
}
"चाल" करने के लिए विकल्प का उपयोग कर केवल उपयोग विकल्प है और एक ही ;-) बेशक ऐसा करने के लिए नहीं है उपभोक्ता के लिए मजबूर जावा (ick!) से निपटने पर हमेशा व्यावहारिक। एसओ में आपका स्वागत है –
मुझे लगता है कि आवश्यकता नहीं है (अल्फा2Cोड! = नल) कभी भी असफल हो सकता है क्योंकि अल्फा2Cोड एक विकल्प – Azzie