Używam.metoda krotkowa, gdy obiekt towarzyszący jest w klasie
Jestem w trakcie migracji z Slick do Slick 2, a w Slick 2 powinieneś użyć metody tupled
podczas rzutowania na klasę case (jak pokazano tutaj http://slick.typesafe.com/doc/2.0.0-RC1/migration.html )
Problem polega na tym, że Klasa case ma obiekt towarzyszący, tzn. jeśli masz coś takiego
case class Person(firstName:String, lastName:String) {
}
Wraz z obiektem towarzyszącym
object Person {
def something = "rawr"
}
W tym samym zakresie metoda tupled
już nie działa, ponieważ jej próba aby uruchomić {[2] } na object
, zamiast case class
.
Czy istnieje sposób na odzyskanie case class
z Person
zamiast object
, aby można było poprawnie wywołać tupled
?
4 answers
Możesz również napisać
(Person.apply _).tupled
Aby uniknąć powtarzania typów.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-13 03:20:58
Jest to bardzo podobne do tego, co powiedział Alexey Romanov, ale aby uniknąć podnoszenia apply
Kiedy tylko potrzebujesz tupled
, dodajemy to do naszych obiektów towarzyszących.
object Person {
def something = "rawr"
def tupled = (Person.apply _).tupled
}
Teraz możesz wywołać Person.tupled
tak jak gdybyś nie miał obiektu towarzyszącego.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-22 21:32:35
Jednym obejściem jest zdefiniowanie obiektu towarzyszącego w następujący sposób:
object Person extends((String,String) => Person) {
...
}
Zobacz też https://groups.google.com/d/msg/scala-user/jyWBMz5Qslw/Bryv4ftzRLgJ Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-13 01:39:50
Aby bazować na innych komentarzach, możesz również wykonać następujące czynności, ponieważ tuple wywołuje wygenerowaną domyślną metodę Zastosuj dla klasy case.
object Person {
...
def tupled = (this.apply _).tupled
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-25 19:04:05