Scala中的模式匹配传递
我想这样做:Scala中的模式匹配传递,scala,Scala,我想这样做: val a = v match { case 1 => 1 case 2 if (condition) => logging case 2 if (other conditions) => 3 case 2 if (more conditions) => 4 case _ => 5 } 我希望它只返回第一个案例2的日志,但通过其他方式查看返回的内容 编辑:更新了类似这样的内容 如果v==2,将为a赋值,否则将为a赋值v
val a = v match {
case 1 => 1
case 2 if (condition) => logging
case 2 if (other conditions) => 3
case 2 if (more conditions) => 4
case _ => 5
}
我希望它只返回第一个案例2的日志,但通过其他方式查看返回的内容
编辑:更新了类似这样的内容
如果v==2,将为a赋值,否则将为a赋值v
像这样的
如果v==2,将为a赋值,否则将为a赋值v
Scala的案例匹配没有失败,但如果我理解正确,这将满足您的需求
val a = v match {
case 1 => 1
case 2 => {
logging // I'm assuming `logging` is some Unit
if(some condition) 3
else if(some other condition) 4
else 5
}
case _ => 5
}
Scala的案例匹配没有失败,但如果我理解正确,这将满足您的需求
val a = v match {
case 1 => 1
case 2 => {
logging // I'm assuming `logging` is some Unit
if(some condition) 3
else if(some other condition) 4
else 5
}
case _ => 5
}
我的逻辑更像是如果v=2,log,然后fall-through,所以在本例中,它将转到默认情况并返回4。我的逻辑更像是如果v=2,log,然后fall-through,所以在本例中,它将转到默认情况并返回4。为什么不编写真正的代码来运行并执行您想要的操作呢,使用if语句和返回以及您需要的任何内容,然后询问如何改进它?我不确定你到底想要什么。这还不是真正的代码,它可以运行并实现你想要的。你仍然在想象match语句的工作方式与它们实际的工作方式不同,然后希望我们能猜出你在想什么。它们所请求的与F中的OR'd匹配模式类似,在F中,多个模式可以导致同一个案例的输出。你为什么不编写真正的代码来运行并实现你想要的结果呢,使用if语句和返回以及您需要的任何内容,然后询问如何改进它?我不确定你到底想要什么。这还不是真正的代码,它可以运行并实现你想要的。你仍然在想象match语句的工作方式与它们实际的工作方式不同,然后希望我们能猜出你在想象什么。它们所要求的与F中的OR'd匹配模式类似,在F中,多个模式可以导致同一个案例的输出。