def *(def星号)是什么意思?

时间:2019-08-16 13:09:01

标签: scala

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

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

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

2 个答案:

答案 0 :(得分:1)

它是SlickTable中抽象方法的名称,用于告诉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中找到更复杂的用法。

答案 1 :(得分:0)

这只是一个正常的函数名称。 Scala允许将几乎所有字符序列都用作函数名称,尽管有些字符需要使用反引号引起来。

def `def` = "def"