applyOrElse
方法(或属性)属于 scala.collection.mutable.AbstractSeq
类(class),其相关用法说明如下。
用法:
def applyOrElse[A1 <: Int, B1 >: A](x: A1, default: A1 => B1): B1
当它包含在函数域中时,将此部分函数应用于给定参数。在未定义此部分函数的情况下应用后备函数。
请注意,表达式pf.applyOrElse(x, default)
等价于
if(pf isDefinedAt x) pf(x) else default(x)
除了applyOrElse
方法可以更有效地实现。对于所有部分函数文字,编译器会生成一个 applyOrElse
实现,以避免对模式匹配器和守卫进行双重评估。这使得applyOrElse
成为许多操作和场景高效实现的基础,例如:
- 将部分函数组合到 orElse
/andThen
链中不会导致过度的 apply
/isDefinedAt
评估 - lift
和 unlift
不会在每次调用时两次评估源函数 - runWith
允许高效 imperative-style 将部分函数与有条件应用的动作相结合
对于具有非平凡isDefinedAt
方法的非文字部分函数类,建议使用避免双重isDefinedAt
评估的自定义实现覆盖applyOrElse
。这可能会导致更好的性能和更可预测的行为 w.r.t.副作用。
值参数:
- default
后备函数
- x
函数参数
返回:
此函数或后备函数应用程序的结果。
继承自:
- PartialFunction.applyOrElse
源码:
- PartialFunction.scala
相关用法
- Scala AbstractSeq.appended用法及代码示例
- Scala AbstractSeq.addString用法及代码示例
- Scala AbstractSeq.unzip用法及代码示例
- Scala AbstractSeq.elementWise用法及代码示例
- Scala AbstractSeq.sliding用法及代码示例
- Scala AbstractSeq.inits用法及代码示例
- Scala AbstractSeq.groupBy用法及代码示例
- Scala AbstractSeq.lengthCompare用法及代码示例
- Scala AbstractSeq.lazyZip用法及代码示例
- Scala AbstractSeq.combinations用法及代码示例
- Scala AbstractSeq.sizeIs用法及代码示例
- Scala AbstractSeq.collectFirst用法及代码示例
- Scala AbstractSeq.sortWith用法及代码示例
- Scala AbstractSeq.groupMap用法及代码示例
- Scala AbstractSeq.groupMapReduce用法及代码示例
- Scala AbstractSeq.scanRight用法及代码示例
- Scala AbstractSeq.prepended用法及代码示例
- Scala AbstractSeq.transpose用法及代码示例
- Scala AbstractSeq.runWith用法及代码示例
- Scala AbstractSeq.mkString用法及代码示例
- Scala AbstractSeq.lengthIs用法及代码示例
- Scala AbstractSeq.permutations用法及代码示例
- Scala AbstractSeq.partitionMap用法及代码示例
- Scala AbstractSeq.unzip3用法及代码示例
- Scala AbstractSeq.tails用法及代码示例
注:本文由纯净天空筛选整理自scala-lang.org大神的英文原创作品 AbstractSeq.applyOrElse。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。