当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Scala IndexedBuffer.applyOrElse用法及代码示例


applyOrElse 方法(或属性)属于 scala.collection.mutable.IndexedBuffer 特性(trait),其相关用法说明如下。

用法:

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 评估 - liftunlift 不会在每次调用时两次评估源函数 - runWith 允许高效 imperative-style 将部分函数与有条件应用的动作相结合

对于具有非平凡isDefinedAt 方法的非文字部分函数类,建议使用避免双重isDefinedAt 评估的自定义实现覆盖applyOrElse。这可能会导致更好的性能和更可预测的行为 w.r.t.副作用。

值参数:

default

后备函数

x

函数参数

返回:

此函数或后备函数应用程序的结果。

继承自:

PartialFunction.applyOrElse

源码:

PartialFunction.scala

相关用法


注:本文由纯净天空筛选整理自scala-lang.org大神的英文原创作品 IndexedBuffer.applyOrElse。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。