Linked from this question
我遇到了 Slick 的文档,发现它要求一个 def *
表定义中的方法来获取映射投影。
所以这条线看起来像这样
def * = (name, id.?).<>(User.tupled,User.unapply)
Slick example here
我看到了
<>
在 tuple
上调用方法- 在这种情况下是 Tuple2
.该方法定义在案例类 ShapedValue
上在 Slick 的代码中。如何找出进行查找的隐式方法?这是我的进口:
import scala.concurrent.Await
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.duration.Duration
import slick.driver.H2Driver.api._
import slick.lifted.ShapedValue
import slick.lifted.ProvenShape
最佳答案
所以我自己想出了一个。
对象 Shape
实现三个特征,即 ConstColumnShapeImplicits
, AbstractTableShapeImplicits
和 TupleShapeImplicits
.这三个特征处理与 Slick 中的 Shapes 相关的隐式转换。TupleShapeImplicits
包含将 Tuple 转换为 TupleShape 所需的所有隐式转换方法。
现在在线(name, id.?, salary.?).<>(User.tupled,User.unapply)
发生的事情是该方法 <>
有一个隐式参数 Shape
Shape 类因此进入隐式转换的范围。和 TupleShapeImplicits
也进入范围。
关于scala - Slick 如何在元组上解析 <> 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35865321/