mde*_*ich 39 singleton scala case-class slick
我正在从Slick迁移到Slick 2,在Slick 2中你想tupled在投影到案例类时使用该方法(如http://slick.typesafe.com/doc/2.0.0-所示)RC1/migration.html)
问题是当case类有一个伴随对象时,即如果你有这样的东西
case class Person(firstName:String,lastName:String) {
}
Run Code Online (Sandbox Code Playgroud)
与伴侣对象一起
object Person {
def something = "rawr"
}
Run Code Online (Sandbox Code Playgroud)
在相同的范围内,该tupled方法不再有效,因为它试图运行tupled的object,而不是,case class.
有没有一种方法来检索case class的Person,而不是object,所以你可以调用tupled正确?
Tim*_*ier 22
这与Alexey Romanov所说的非常相似,但为了避免apply在需要时提升tupled,我们只需将其添加到我们的伴侣对象中.
object Person {
def something = "rawr"
def tupled = (Person.apply _).tupled
}
Run Code Online (Sandbox Code Playgroud)
现在你可以Person.tupled像你没有伴侣对象一样打电话.
一种解决方法是定义一个伴随对象,如下所示:
object Person extends((String,String) => Person) {
...
}
Run Code Online (Sandbox Code Playgroud)
看到.https://groups.google.com/d/msg/scala-user/jyWBMz5Qslw/Bryv4ftzRLgJ