【问题标题】:Where is the .ddl method defined in Slick's ScaladocSlick的Scaladoc中定义的.ddl方法在哪里
【发布时间】:2015-01-27 23:32:10
【问题描述】:

我已经想出创建一个 Postgres 表,我需要这个导入行 import slick.driver.PostgresDriver.simple._

但是,当我查看 SimpleQL 的 Scaladoc 时,我找不到 ddl 的方法,我是不是找错地方了?这对我浏览 Scaladocs 来说真的是一个练习。我可以看到 TableQuery 有别名,但我没有看到添加了任何额外的方法。

TLDR:在 Slick 2.1.0 的 scala 文档中定义的 ddl 方法在哪里?

【问题讨论】:

  • 很高兴发现我并不是唯一对此感到绝望的人。

标签: scala slick-2.0


【解决方案1】:

方法ddl的定义包含在类TableQueryExtensionMethodsSequence的描述中。例如,可以通过 Scaladoc 的 index 找到它。

为什么这有意义?

考虑以下让我困惑了一段时间的代码:

import scala.slick.driver.H2Driver.simple._
// [..]
val dict = TableQuery[Dict]
// [..]
// Create the dictionary table and insert some data
dict.ddl.create

首先,请注意,给定示例中的导入与问题中的非常相似。我只是使用不同的数据库。

方法ddl 应用于TableQuery[Dict] 类型的值,尽管TableQuery 类显然不包含此方法。

相反,显示类TableQueryExtensionMethods 包含此方法。

TableQueryExtensionMethods 类的 implementation 表明 Slick 的开发人员使用了来自 TableQuery隐式转换 /em> 到 TableQueryExtensionMethods

 implicit def tableQueryToTableQueryExtensionMethods [T <: Table[_], U](q: Query[T, U, Seq] with TableQuery[T]) 
    = new TableQueryExtensionMethods[T, U](q)

这允许执行行

dict.ddl.create

从上面的例子。

【讨论】:

    猜你喜欢
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-19
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    相关资源
    最近更新 更多