为什么没有部分函数类型的文字?

时间:2012-03-15 23:51:03

标签: scala built-in-types

我想知道为什么不存在部分函数类型的文字。我必须写

val pf: PartialFunction[Int, String] = {
  case 5 => "five"
}

其中像:=>这样的文字会更短:

val pf: Int :=> String = {
  case 5 => "five"
}

部分函数经常被使用,而Scala已经有了一些“特殊”功能,为什么没有特殊的语法呢?

1 个答案:

答案 0 :(得分:20)

可能部分是因为你不需要文字:如果你想要更简洁的语法,你总是可以自己编写:=>作为类型中缀运算符:

scala> type :=>[A, B] = PartialFunction[A, B]
defined type alias $colon$eq$greater

scala> val pf: Int :=> String = { case 5 => "five" }
pf: :=>[Int,String] = <function1>

scala> pf.isDefinedAt(0)
res0: Boolean = false

scala> pf.isDefinedAt(5)
res1: Boolean = true

我不是Scala语言的设计者之一,所以这或多或少是对“为什么?”的猜测。您可以在the scala-debate list获得更好的答案,这是一个更适合语言设计问题的场所。