2010-03-31 32 views

Trả lời

7

Tôi không nghĩ rằng các chức năng ẩn danh có thể có thông số loại. Xem this answer để biết chi tiết.

7

Để tóm tắt từ câu trả lời đó: Không, bạn không thể làm cho các hàm ẩn danh chung, nhưng bạn có thể xác định rõ ràng hàm của bạn như một lớp mở rộng một trong các đặc điểm Function0, Function1, Function2, v.v. chức năng áp dụng từ những đặc điểm đó. Sau đó, lớp bạn định nghĩa có thể là chung chung. Đây là đoạn trích từ bài viết gốc, có sẵn here:

scala> class myfunc[T] extends Function1[T,String] { 
    |  def apply(x:T) = x.toString.substring(0,4) 
    | } 
defined class myfunc 

scala> val f5 = new myfunc[String] 
f5: myfunc[String] = <function> 

scala> f5("abcdefg") 
res13: java.lang.String = abcd 

scala> val f6 = new myfunc[Int] 
f6: myfunc[Int] = <function> 

scala> f6(1234567) 
res14: java.lang.String = 1234 
+2

Cũng có thể viết thành ngữ hơn là 'mở rộng (T => Chuỗi) {' –

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