Scala'da oldukça yeniyim ve özelliklerden gelen verileri korurken bir vaka sınıfını kopyalamanın en iyi yolu hakkında bir sorum var.Scala: Vaka sınıflarını özelliklerle kopyalama
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]")
Sonra tek bir parametre ile yeni bir kopyasını değişti yapmak istiyorum: Örneğin, aşağıdaki ı olduğunu varsayalım
val user2 = user.copy(email = "[email protected]")
Şimdi, yukarıdaki örnekte, mülkiyet createTime almaz User case sınıfının kurucusunda tanımlanmadığı için kopyalandı. Yani sorum şu: kurucuya hareketli createTime'ın bir seçenek olmadığını varsayarak, özellikten gelen değeri içeren Kullanıcı nesnesinin bir kopyasını almanın en iyi yolu nedir? Ben
Şimdiden teşekkürler Scala 2.9.1
kullanıyorum! Joe
önünüzde çok seçenek vardır değil: manuel 'User' vaka sınıfının bildiriminde istediğiniz kopyayı üretecek böyle bir yöntemi uygulamak ya da 2.10 makro o otomatikleştirmek özelliğini Scala kullanın ya. İkinci seçenek kesinlikle yeni başlayanlar için kolay bir iş olmayacaktır. –
@NikitaVolkov Bana/bize makrolarla nasıl yapılacağına dair bir örnek vermeye istekli olsaydınız, bu harika olurdu. –
@mhs Kulübüne katıldım. Makrolarda yeni bir arıyım, bu yüzden cevap olarak göndermedim. Ama [işte nasıl] (http://stackoverflow.com/a/10397595/485115) 'Toolbox' api ile çok benzer bir görevi çözdüm. Kabul edilen cevap makrolara dayanıyor, ancak en son Scala sürümünü desteklemiyor. –