【发布时间】:2011-09-07 15:48:46
【问题描述】:
考虑以下几点:
scala> object Currency extends Enumeration {
| type Currency = Value
| val USD = Value
| val GBP = Value
| val EUR = Value
| val TRY = Value // Turkish lira
| val NGN = Value // Nigerian naira
| }
defined module Currency
scala> import Currency._
import Currency._
scala> val pf: (String) => Option[Currency] = {
| case "$" => Some(USD)
| case "€" => Some(EUR)
| case "£" => Some(GBP)
| case "₦" => Some(NGN)
| case _ => None
| }
pf: (String) => Option[Currency.Currency] = <function1>
我认为我可以这样做:
scala> "$" match pf
<console>:1: error: '{' expected but identifier found.
"$" match pf
^
但是没有。我在这里缺少一些基本的东西吗?我希望我的 PartialFunction 可以在匹配语句中使用和重用。这不可能吗?
【问题讨论】:
-
您的
pf不是偏函数,而是提升的偏函数(即常规函数)。这不是为什么这不起作用,但在其他情况下它可以产生影响。 -
@Rex 好的,谢谢。但如果不是为什么不工作,你知道是什么原因吗?
标签: scala pattern-matching partialfunction