Scala 部分函数orElse的效率
在Scala 部分函数orElse的效率,scala,Scala,在应用期间,使用部分功能或LSE是否比使用大型匹配块效率更高或更低 举例来说,问题是: val pf = { case "a" => "A"} orElse { case "b" => "B" } orElse { case "c" => "C" } ... 效率高于或低于: val pf = { case "a" => "A" case "b" => "B" case "c" => "C" ... }
应用
期间,使用部分功能
或LSE是否比使用大型匹配
块效率更高或更低
举例来说,问题是:
val pf = { case "a" => "A"} orElse
{ case "b" => "B" } orElse
{ case "c" => "C" } ...
效率高于或低于:
val pf = { case "a" => "A"
case "b" => "B"
case "c" => "C"
...
}
在应用过程中,将一个值应用到pf
:
pf(x)
请参见本书的作者。基本上效率较低。我相信在这篇博文发表后不久,trunk已经做了一些工作来解决这个问题 第二种情况的效率不可能低于第一种情况,因为编译器可以将其转换为第一种情况(事实上,这与虚拟模式匹配器的功能相差不远)
因此,如果你有选择的话,第二种情况总是更安全的选择。即使
orElse
效率较低,当它可以让你的代码更干净时,不使用它也可能不是那么低效。话虽如此,你给出的例子是人为的(这很好,我不是在批评):在那种情况下,后一个例子更可取,因为没有很好的理由将这些非常相似的案例分解。