我想知道为什么不存在部分函数类型的文字。我必须写
val pf: PartialFunction[Int, String] = {
case 5 => "five"
}
其中像:=>
这样的文字会更短:
val pf: Int :=> String = {
case 5 => "five"
}
部分函数经常被使用,而Scala已经有了一些“特殊”功能,为什么没有特殊的语法呢?
答案 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获得更好的答案,这是一个更适合语言设计问题的场所。