के साथ केस क्लास की प्रतिलिपि बनाना मैं स्कैला के लिए बिल्कुल नया हूं और मेरे पास लक्षणों से आने वाले डेटा को संरक्षित करते समय केस क्लास की प्रतिलिपि बनाने का सबसे अच्छा तरीका है। उदाहरण के लिए, मान लीजिए कि मैं जाने के बाद:स्कैला:
trait Auditing {
var createTime: Timestamp = new Timestamp(System.currentTimeMillis)
}
case class User(val userName: String, val email: String) extends Auditing
val user = User("Joe", "[email protected]")
तो मैं एक पैरामीटर के साथ एक नई प्रतिलिपि बदल बनाना चाहते:
val user2 = user.copy(email = "[email protected]")
अब, ऊपर के उदाहरण में, संपत्ति createTime नहीं मिलता है कॉपी किया गया क्योंकि यह उपयोगकर्ता केस क्लास के निर्माता में परिभाषित नहीं है। तो मेरा सवाल यह है कि यह मानते हुए कि कन्स्ट्रक्टर में createTime को ले जाना एक विकल्प नहीं है, उपयोगकर्ता ऑब्जेक्ट की एक प्रति प्राप्त करने का सबसे अच्छा तरीका क्या है जिसमें विशेषता से मूल्य शामिल है?
मैं स्काला 2.9.1
उपयोग कर रहा हूँ पहले सेधन्यवाद! जो
काफी विकल्प आप से आगे नहीं है: या तो आप मैन्युअल रूप से इस तरह के एक विधि है कि 'User' मामले वर्ग की घोषणा में प्रतिलिपि आप चाहते हैं का उत्पादन करेगा लागू करने या आप स्काला का उपयोग 2.10 मैक्रोज़ स्वचालित करने के लिए शामिल हैं। दूसरा विकल्प निश्चित रूप से शुरुआत के लिए एक आसान काम नहीं होगा। –
@NikitaVolkov यदि आप मुझे मैक्रोज़ के साथ ऐसा करने के उदाहरण के साथ मुझे/हमें प्रदान करने के लिए तैयार थे, तो यह बहुत अच्छा होगा। –
@ एमएचएस मैं क्लब में शामिल हूं। मै मैक्रोज़ में एक नौसिखिया हूं, इसलिए मैंने इसे उत्तर के रूप में पोस्ट नहीं किया है। लेकिन [यहां कैसे है] (http://stackoverflow.com/a/10397595/485115) मैंने 'टूलबॉक्स' एपीआई के साथ एक बहुत ही समान कार्य हल किया। स्वीकार्य उत्तर मैक्रोज़ पर आधारित है, लेकिन मुझे लगता है कि यह नवीनतम स्कैला संस्करण का समर्थन नहीं करता है। –