scala - def * (def asterisk) 是什么意思?

标签 scala

我正在查看的一些代码中的示例

class X {
    def k1 = column[Int]("k1")
    def k2 = column[Int]("k2")
    def * = (k1, k2)
}

它只是一个普通的函数名还是有什么特别之处?

最佳答案

它是Slick中一个抽象方法的名字的 Table,用于告诉 Slick 如何将这些列转换为 Scala 对象,并将 Scala 对象转换回数据库列。您问题中的完整代码是

class X(tag: Tag) extends Table[(Int, Int)] {
    def k1 = column[Int]("k1")
    def k2 = column[Int]("k2")
    override def * : ProvenShape[(Int, Int)] = (k1, k2) // you may prefer to omit 'override' and return type for readability
}

因此,如果您扩展 Table,则必须覆盖此方法。

您可以在 documentation 中找到更复杂的用法.

关于scala - def * (def asterisk) 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57525263/

相关文章:

java - 将 Play 2.0 从 Java 默认更改为 Scala

scala - 如何在 Spark (Scala) 中合并两个 RDD?

mysql - 当数据明显更多时,为什么 resultSet.next() 不前进?

java - Akka 是否有一个 ExecutorCompletionService 等效项,其中 Futures 按其完成时间排队?

java - 可以使用 Java 中的 GraphX 将 CSV 文件转换为图形吗

scala - 如何取消Spark DataFrame列

scala - 使用 spark-scala 删除数据框的最后一列

java - 从 TupleN 到 Comparable 的隐式转换

scala - 在 scala 中返回 "object"

scala - 如何使用 SBT 配置将附加文件添加到不是 java 或 scala 文件的类路径?