कुछ नेस्टेड मामले वर्गों और क्षेत्र addresses
एक Seq[Address]
है:"सेक" फ़ील्ड के साथ इस नेस्टेड केस क्लास को कैसे संशोधित करें?
val employee = Employee(Company(Seq(
Address(Street("aaa street")),
Address(Street("bbb street")),
Address(Street("bpp street")))))
यह 3 पते हैं:
// ... means other fields
case class Street(name: String, ...)
case class Address(street: Street, ...)
case class Company(addresses: Seq[Address], ...)
case class Employee(company: Company, ...)
मैं एक कर्मचारी है।
और मैं केवल सड़कों को "बी" से शुरू करना चाहता हूं। मेरे कोड निम्नलिखित की तरह गड़बड़ है:
val modified = employee.copy(company = employee.company.copy(addresses =
employee.company.addresses.map { address =>
address.copy(street = address.street.copy(name = {
if (address.street.name.startsWith("b")) {
address.street.name.capitalize
} else {
address.street.name
}
}))
}))
modified
कर्मचारी तो है:
Employee(Company(List(
Address(Street(aaa street)),
Address(Street(Bbb street)),
Address(Street(Bpp street)))))
मैं इसे बेहतर बनाने के लिए एक तरह से तलाश कर रहा हूँ, और एक नहीं मिल रहा। यहां तक कि Monocle भी कोशिश की, लेकिन इस समस्या पर इसे लागू नहीं कर सकता है।
क्या इसे बेहतर बनाने का कोई तरीका है?
पुनश्च: वहाँ दो महत्वपूर्ण आवश्यकताओं हैं:
- उपयोग केवल अपरिवर्तनीय डेटा
- अन्य मौजूदा क्षेत्रों
धन्यवाद यह कर सकता है !!! यह वास्तव में अच्छा है। मुझे अंततः यह जानने का मौका मिला कि कितना शक्तिशाली बेकार है! – Freewind
अच्छा जवाब, लेकिन एक चेतावनी के लिए मेरा देखें (यह डेटा संरचना में _any_ सड़क नामों को बदल देगा)। –