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

kir*_*uku 13 scala built-in-types

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

val pf: PartialFunction[Int, String] = {
  case 5 => "five"
}
Run Code Online (Sandbox Code Playgroud)

字面意思:=>较短的地方:

val pf: Int :=> String = {
  case 5 => "five"
}
Run Code Online (Sandbox Code Playgroud)

部分函数经常被使用并且在Scala中已经有了一些"特殊"功能,为什么没有特殊的语法呢?

Tra*_*own 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
Run Code Online (Sandbox Code Playgroud)

我不是Scala语言的设计者之一,所以这或多或少是对"为什么?"的猜测.你可能会在得到更好的答案了scala-debate名单,这是语言设计问题,更合适的场地.

  • 之前我曾经问过同样的问题以及没有添加到语言中的原因(它简单地存在于`〜>`)与推断类型参数的方式有关l-2-r (2认同)
  • 一旦paulp将`=>?`添加到库中,但反之则因为关联性与`=>`(关键字)不同. (2认同)