Почему нет частичного литерала типа функции? - PullRequest
13 голосов
/ 16 марта 2012

Интересно, почему не существует литерала для частичных типов функций.Я должен написать

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

, где литерал типа :=> будет короче:

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

Часто используются частичные функции, а в Scala уже есть какая-то «особая» функция, так почемунет специального синтаксиса для этого?

1 Ответ

20 голосов
/ 16 марта 2012

Вероятно, отчасти потому, что вам не нужен литерал: вы всегда можете написать свой собственный :=> как оператор инфиксного типа, если вам нужен более краткий синтаксис:

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, так что это более или менее догадка о «почему?».Вы можете получить лучшие ответы в списке scala-debate , который является более подходящим местом для вопросов языкового дизайна.

...