我想了解在Scala中使用默认的Anorm库在播放框架中的数据库连接。游戏有一个样品例如“计算机数据库”,其中的功能之一尝试检索从DB计算机:在Scala中了解通过名称与currying调用
DB.withConnection { implicit connection =>
SQL("select * from computer where id = {id}").on('id -> id).as(Computer.simple.singleOpt)
}
如果我看withConnection的函数签名是这样的:
def withConnection [A] (block: (Connection) ⇒ A)(implicit app: Application): A
Execute a block of code, providing a JDBC connection. The connection and all created statements are automatically released.
**block** Code block to execute.
我的问题是如何将函数调用的每个值映射到函数定义?例如什么是A(是整个SQL查询,但返回类型的含义是什么?)。在这种情况下,隐含应用程序?它在哪里定义?
我明白你说的一个问题,但是:这个SQL查询定义在正在被导入的'package models'中'object Application',那么如何让'Application'对象可见于隐式定义'implicit app:Application' – Richeek
不能给你一个确切的答案,我不得不看看代码。对不对。 只是猜测:也许它是Iherited?或者它可能被导入到一个封闭范围或父类? – Ichthyo
我会检查明天......你提供的例子'def myBlock(connection:Connection):SQL = ... '不起作用,我必须导入'java.sql.Connection'才能找到'Connection'类,但'隐式连接=> ...'不需要导入它。它令人困惑! – Richeek