मैं सोच रहा है कि क्या पारदर्शीimplicit
रूपांतरण वास्तव में इस तरह के एक अच्छा विचार कर रहे हैं और क्या यह वास्तव में, implicits अधिक उपयोग करने के लिए उम बेहतर हो सकता है, स्पष्ट। उदाहरण के लिए, मान लीजिए मैं एक तरीका है जिसके एक Date
एक पैरामीटर के रूप में स्वीकार करता है और मैं एक अंतर्निहित रूपांतरण जो बदल जाता है एक एक Date
में String
है:स्काला अंतर्निहित उपयोग विकल्पों
implicit def str2date(s: String) : Date = new SimpleDateFormat("yyyyMMdd").parse(s)
private def foo(d: Date)
तो जाहिर है मैं एक पारदर्शी implicit
रूपांतरण के साथ इस फोन कर सकते हैं:
foo("20090910")
क्या यह तथ्य बेहतर होगा कि मैं स्ट्रिंग को एक तारीख में अधिक स्पष्ट रूप से परिवर्तित कर रहा हूं?
class DateString(val s: String) {
def toDate : Date = new SimpleDateFormat("yyyyMMdd").parse(s)
}
implicit def str2datestr(s: String) : DateString = new DateString(s)
तो फिर उपयोग लग रहा है और अधिक की तरह:
foo("20090910".toDate)
इस का लाभ यह है कि यह बाद में क्या हो रहा है पर स्पष्ट है - मैं पारदर्शी implicit
द्वारा अब कुछ समय के लिए बाहर पकड़ लिया गया है रूपांतरण मुझे (Option
से Iterable
किसी के बारे में पता होना चाहिए?) और यह उपयोग हमें अभी भी implicit
एस की शक्ति का लाभ लेने की अनुमति देता है।