我最近开始学习Scala和Play框架,在阅读Play框架的Anorm文档时,我得到了以下代码片段:
import anorm.SqlParser.str
val id: List[String] =
SQL("insert into City(name, country) values ({name}, {country})")
.on('name -> "Cambridge", 'country -> "New Zealand")
.executeInsert(str.+) // insertion returns a list of at least one string keys
却被编译错误卡住了:
package controllers
import play.api.Play.current
import javax.inject._
import play.api._
import play.api.mvc._
import play.api.db.{ Database, NamedDatabase, DB }
import anorm._
import anorm.SqlParser.str
@Singleton
class HomeController @Inject()() extends Controller {
def index = Action {
DB.withConnection { implicit c =>
val id: List[String] =
SQL("insert into City(name, country) values ({name}, {country})")
.on('name -> "Cambridge", 'country -> "New Zealand")
.executeInsert(str.+) // insertion returns a list of at least one string keys
Ok("Result is: " + id)
}
}
}
libraryDependencies ++= Seq(
jdbc,
cache,
ws,
"org.scalatestplus.play" %% "scalatestplus-play" % "1.5.1" % Test,
"com.typesafe.play" %% "anorm" % "2.5.0",
"org.postgresql" % "postgresql" % "9.3-1102-jdbc41"
)
您没有使用.str
,必须使用列位置或列名调用该列,以便将如此引用的列解析为字符串。
我试图使用mockito在scala中模拟,如下所示 会有什么问题?
给定下面用Mockito模拟Scala类的代码,我会得到一个错误并且无法编译: 错误是: 对重载定义的引用不明确,类型为(x$1:class[common.testeable],x$2:org.Mockito.mocksettings)的对象Mockito中的方法mock和类型为(x$1:class[common.testeable],x$2:org.Mockito.stubbing.answhe
本文向大家介绍Java Varargs中的方法重载和歧义,包括了Java Varargs中的方法重载和歧义的使用技巧和注意事项,需要的朋友参考一下 在Java中使用变量参数时存在歧义。发生这种情况是因为两种方法绝对可以有效地被数据值调用。因此,编译器不知道该调用哪种方法。 示例 输出结果 名为Demo的类定义了一个名为“ my_fun”的函数,该函数采用可变数量的浮点值。使用“ for”循环将这些
为什么我有这个错误? 错误:(5,18)对重载定义的引用不明确,类型为(x$1:String)布尔的类String中的方法startsWith和类型为(x$1:String,x$2:Int)布尔的类String中的方法startsWith匹配预期的类型?水果过滤器(_.startswith==“AP”) 水果过滤器(_.startswith==“AP”)
scalac抱怨第一个实例化(对重载定义的引用不明确),因为单个参数和varargs方法都是相同特定的。 搜索stackoverflow时,我发现强制使用单参数方法是可能的。将使编译器使用。 我的问题是为什么第二个实例化匹配而没有额外的“提示”?换句话说,为什么双参数方法比varargs方法更具体,而单参数方法不是?
我正在尝试使用AassetManager从android apk访问资产。然而,尽管我已经包含了asset_manager.h和asset_manager_jni.h,但我仍然得到了“对aassetmanager_fromjava的未定义引用”。其他来自asset_manager.h的函数,如AAssetManager_openDir(mgr,"“)等也不能被引用。 以下是完整的代码 这段代码在一