2012-03-15 42 views
12

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

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

其中的文字像:=>将更短:

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

部分功能是使用频率和使用Scala中已经有一些“特殊”的功能,所以它为什么没有特殊的语法?

回答

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 

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

+0

+1我刚刚建议的类型别名技巧,但不知道是否有可能进一步采用中缀表单。 – 2012-03-16 00:29:20

+0

@Vlad,我承认,当我第一次了解他们时,我经历了一个(简短)类型的中缀操作符滥用阶段,并且仍然认为这是一个非常漂亮的小语言功能。 – 2012-03-16 00:31:41

+2

我以前也问过这个问题,它之所以没有被添加到语言中(它简单地存为'〜>')与如何推断类型参数有关l-2-r – 2012-03-16 01:01:44

相关问题