我试图通过这样做从java.sql.PreparedStatement中的方法返回一个函数:
def getSetDateFunction(stmt:PreparedStatement)={
stmt.setDate _
}
这失败了
ambiguous reference to overloaded definition,
[error] both method setDate in trait PreparedStatement of type (x$1: Int, x$2: java.sql.Date, x$3: java.util.Calendar)Unit
[error] and method setDate in trait PreparedStatement of type (x$1: Int, x$2: java.sql.Date)Unit
[error] match expected type ?
[error] stmt.setDate _
[error] ^
[error] one error found
有没有办法提示我要返回哪一种方法?
答案 0 :(得分:6)
是的,您可以通过显式提供其参数的数量和类型来指定该函数。
假设你想要一个带有两个参数的那个:
def getSetDateFunction(stmt: PreparedStatement): (Int, java.sql.Date) => Unit =
stmt.setDate
或者:
def getSetDateFunction(stmt: PreparedStatement) =
stmt.setDate(_: Int, _: java.sql.Date)
答案 1 :(得分:2)
您可以通过指定getSetDateFunction的返回类型来提示返回:
def getSetDateFunction(stmt:PreparedStatement):(Int,java.sql.Date)=>Unit = {
stmt.setDate _
}
将返回第二个功能