gpt4 book ai didi

scala - scala 有 "test-if-match"运算符吗?

转载 作者:行者123 更新时间:2023-12-04 10:27:18 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:




9年前关闭。




Possible Duplicate:
Scala: short form of pattern matching that returns Boolean



在我的 Scala 代码中,我发现自己经常编写如下内容:
x match{
case Type(params) => doStuffWith(params)
case _ => /* do nothing*/
}

是否已经有一些预定义的运算符来执行此操作?我想如果我能写这样的东西会更清楚:
if( x match Type(params)) {
doStuffWith(params)
}

基本上避免了奇怪的其他情况。我还遇到过其他情况,如果能够以内联方式验证某些内容是否与模式匹配,可以为我节省一对额外的大括号。

我知道这种事情可能只会在编写更多迭代代码时更有用,但是 Scala 似乎有很多隐藏的功能,我想知道是否有人对此有一个简单的解决方案。

最佳答案

您可以 lift来自 Any 的部分函数至 AAny 进入一个函数至 Option[A] .

为了使语法更好,首先定义一个辅助函数:

def lifted[A]( pf: PartialFunction[Any,A] ) = pf.lift

然后,赚取利润:
val f = lifted {
case Type(i) => doStuff(i)
}

scala> f(2)
res15: Option[Int] = None

scala> f(Type(4))
res16: Option[Int] = Some(8)
doStuff仅当参数匹配时才会调用方法。你可以有几个 case 子句。

关于scala - scala 有 "test-if-match"运算符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12263842/

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