如何从Scala API文档中确定所需的参数?

Far*_*mor 3 scala scalaquery

我很难解读Scala API文档.

例如,我已经定义了一个在数据库中使用的时间戳.

def postedDate = column[Timestamp]("posted_date", O NotNull, O Default new Timestamp(Calendar.getInstance.getTimeInMillis), O DBType("timestamp"))
Run Code Online (Sandbox Code Playgroud)

如果我没有阅读几个例子,其中没有一个在API文档中,我怎么能构建这个语句?
Column文档中我怎么知道参数?
我猜测它与TimestampTypeMapperDelegate有关,但它仍然不清楚如何使用它.

jxs*_*ord 7

对于Column的scaladoc,首先要注意的是它是抽象的,所以你可能想要直接处理它的子类.例如,NamedColumn.

需要注意的其他事项是它有一个类型参数,构造函数采用相同参数类型的TypeMapper的隐式参数.TypeMapper的文档提供了如何创建自定义文档的示例,但是如果查看子类,则会提供大量提供的子类(例如时间戳).声明为隐式参数的事实表明,范围内可能存在一个参数,如果是这样,它将自动用作参数而不明确说明.如果范围中没有满足要求的隐含范围,则必须提供该范围.

接下来要注意的是,TypeMapper是一个使用BasicProfile参数和TypeMapperDelegate结果扩展函数的特征.基本上这里发生的是类型映射器的定义与实现分离.这样做是为了支持多种口味的数据库.如果看一下BasicProfile的子类,很明显ScalaQuery支持很多,而且正如我们所知,它们的实现有时会完全不同.

如果你追逐文档一段时间,你最终会得到BasicTypeMapperDelegates特征,其中包含一堆val,其中包含每个基本类型(包括时间戳)的委托.

BasicTable定义了一个名为column的方法(您已经找到),并且只要您使用标准类型,列方法的目的就是保护您不必了解有关TypeMappers和Delegates的任何信息.

所以,我想回答你关于API文档中是否有足够信息的问题,我个人会说是,但是可以通过更好地描述类,对象,特征和方法来增强文档.

总而言之,我总是发现利用示例,API文档甚至项目的源代码提供了一种强大的方法来加快大多数开源项目的速度.坦率地说,许多这些项目(包括ScalaQuery)为我节省了无数的工作时间,但可能会花费无数个小时的个人时间来创建和提供.这些不一定是商业产品,我们作为消费者不应该将它们保持在与我们收费产品相同的标准.如果您发现文档不足,请贡献!