Scala编译器不执行未返回的值
我是斯卡拉的新手。最近我在写一些代码,发现scala有一些不寻常的行为。所以我写了这个代码Scala编译器不执行未返回的值,scala,functional-programming,Scala,Functional Programming,我是斯卡拉的新手。最近我在写一些代码,发现scala有一些不寻常的行为。所以我写了这个代码 for { verification <- verifyReset(hash, timestamp, id) resp = if (verification) { setPassword(id, password) setActive(id) HttpResponse(Accepted, Seq(Location(Empty wit
for {
verification <- verifyReset(hash, timestamp, id)
resp = if (verification) {
setPassword(id, password)
setActive(id)
HttpResponse(Accepted, Seq(Location(Empty withPath Path / id)))
} else HttpResponse(Unauthorized)
} yield resp
我得到了r
as6(正常行为),但它也给了我控制台上的输出
1语句
第二条声明
我不明白这一点,因为在计算2*3
时,我不需要执行println
,那么为什么执行println
你的假设在这里是错误的
它将在返回最后一条语句之前执行所有操作。默认情况下,返回最后一条语句。一定有其他错误
setPassword(id,password)
设置活动(id)
你的假设在这里是错误的
它将在返回最后一条语句之前执行所有操作。默认情况下,返回最后一条语句。一定有其他错误
setPassword(id,password)
setActive(id)
如果您能向我们展示您的setPassword
和setActive
功能,可能会更容易帮助您。如果您的假设是正确的,您将永远无法成功调用println
,因为它甚至没有可以使用的结果。您的假设不正确。这种行为是否是因为懒惰评估进入进行理解
,而第二种情况并非如此?如果您可以向我们展示您的设置密码
和设置活动
函数,可能会更容易帮助您。如果您的假设正确,您永远无法成功调用println
,因为它甚至没有可以使用的结果。你的假设是不正确的。这种行为是因为懒惰评估进入进行理解,而在第二种情况下不是这样吗?我向你保证setPassword
或setActive
@AyushAgarwal没有错误,如果是这样的话。请粘贴主方法对象的代码。调试会更容易我向您保证setPassword
或setActive
@AyushAgarwal在这种情况下不会出错。请粘贴主方法对象的代码。这将更容易调试
r = if(true){
println("1st statement")
println("2nd statement")
2*3
}