Jestem całkiem nowy w Scali i mam pytanie o najlepszy sposób skopiowania klasy sprawy przy zachowaniu danych pochodzących z cech. Na przykład, powiedzmy, że mam następujące:Scala: Kopiowanie klas przypadków z cechą
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]")
Następnie chcę zrobić nową kopię z jednego parametru zmianie:
val user2 = user.copy(email = "[email protected]")
Teraz, w powyższym przykładzie, createtime nieruchomość nie dostać skopiowane, ponieważ nie jest zdefiniowane w konstruktorze klasy Case użytkownika. Moje pytanie brzmi: zakładając, że przeniesienie createTime do konstruktora nie jest opcją, jaki jest najlepszy sposób na uzyskanie kopii obiektu User, która zawiera wartość z cechy?
Używam Scala 2.9.1
Dzięki z góry! Joe
nie ma zbyt wiele możliwości przed sobą: albo ręcznie wdrożyć taką metodę, która będzie produkować kopie chcesz w deklaracji klasy 'użytkownik portu wypadku lub użyć Scala 2.10 makr do automatyzacji, które oferują. Druga opcja zdecydowanie nie będzie łatwym zadaniem dla początkujących. –
@NikitaVolkov Jeśli byłbyś gotów dostarczyć mi/nam przykład, w jaki sposób zrobiłbyś to z makrami, byłoby to więcej niż świetne. –
@mhs Dołączam do klubu. Jestem newbee w makrach, dlatego nie opublikowałem go jako odpowiedzi. Ale [tutaj jest jak] (http://stackoverflow.com/a/10397595/485115) Rozwiązałem bardzo podobne zadanie z api Toolbox. Przyjęta tam odpowiedź jest oparta na makrach, ale myślę, że nie obsługuje ona najnowszej wersji Scala. –