2012-03-15 59 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

相關問題