2012-03-15 26 views
12

Tôi tự hỏi tại sao không tồn tại một chữ cho các loại hàm một phần. Tôi phải viếtTại sao không có loại hàm một phần nào?

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

nơi một nghĩa đen như :=> sẽ ngắn hơn:

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

chức năng từng phần thường được sử dụng và trong Scala đã một số tính năng "đặc biệt", vậy tại sao không có cú pháp đặc biệt cho nó?

Trả lời

20

Có lẽ một phần vì bạn không cần một chữ: bạn luôn có thể viết riêng :=> của bạn như là một nhà điều hành loại ghi vào nếu bạn muốn cú pháp ngắn gọn hơn:

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 

Tôi không phải là một trong những nhà thiết kế của ngôn ngữ Scala, vì vậy, đây là nhiều hơn hoặc ít hơn một đoán về "tại sao?". Bạn có thể nhận được câu trả lời tốt hơn tại số the scala-debate list, là địa điểm thích hợp hơn cho các câu hỏi về thiết kế ngôn ngữ.

+0

+1 Tôi vừa mới đề xuất mẹo bí danh loại nhưng không biết có thể tiến thêm một bước nữa và sử dụng biểu mẫu infix. –

+0

@Vlad, tôi sẽ thừa nhận rằng tôi đã trải qua giai đoạn lạm dụng nhà điều hành kiểu tóm tắt (ngắn gọn) khi lần đầu tiên tôi biết về chúng, và vẫn nghĩ rằng đó là một tính năng ngôn ngữ khá tiện lợi. –

+2

Tôi đã hỏi trước đó và lý do nó chưa được thêm vào ngôn ngữ (nó tồn tại một thời gian ngắn như '~>') là một cái gì đó để làm với cách các tham số kiểu được suy ra l-2-r –

Các vấn đề liên quan