gpt4 book ai didi

scala - 在 Scala 中使用 Jedis 类型不匹配

转载 作者:可可西里 更新时间:2023-11-01 11:45:44 24 4
gpt4 key购买 nike

以下代码会产生四种类型不匹配错误。为什么?在第一种和第二种情况下,我正在对字符串进行简单比较。在第三种情况下,我将 false 分配给类型为 Boolean 的 var。在最后一种情况下,我只是打印堆栈跟踪!

我很困惑。

代码:

//return TRUE if logged in
def isLoggedIn(auth: String): Boolean = {
val jedis = pool.getResource()
var userid = jedis.get("auth:" + auth)
var retVal = false
try {
if(userid != null) { //error here
val userAuth = jedis.get("uid:" + userid + ":auth")
if(userAuth == auth) { // error here
retVal = true // error here
}
}
} catch {
case e => e.printStackTrace() //error here
} finally {
pool.returnResource(jedis)
return retVal
}
}

错误:

[error] type mismatch;
[error] found : Unit
[error] required: Boolean
[error] retVal = true // error here
[error] ^
[error] type mismatch;
[error] found : Unit
[error] required: Boolean
[error] if(userAuth == auth) { // error here
[error] ^
[error] type mismatch;
[error] found : Unit
[error] required: Boolean
[error] if(userid != null) { //error here
[error] ^
[error] type mismatch;
[error] found : Unit
[error] required: Boolean
[error] case e => e.printStackTrace() //error here
[error] ^
[error] four errors found

我正在使用 Jedis 2.0.0 (https://github.com/xetorthio/jedis) 与 Redis 数据库交互。 Jedis.get() 方法返回 String。我正在使用 sbt 0.10.1 和 scala 2.9.0-1。

这是怎么回事?

最佳答案

已修复。需要将 return 移出 try/catch/finally。这是更新后的代码,编译得很好。我挥之不去的问题是:为什么 return 不能在 finally 中?

//return TRUE if logged in
def isLoggedIn(auth: String): Boolean = {
val jedis = pool.getResource()
var userid = jedis.get("auth:" + auth)
var retVal = false
try {
if(userid != null) {
val userAuth = jedis.get("uid:" + userid + ":auth")
if(userAuth == auth) {
retVal = true
}
}
} catch {
case e => e.printStackTrace()
} finally {
pool.returnResource(jedis)
}
return retVal
}

关于scala - 在 Scala 中使用 Jedis 类型不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6935689/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com