Để 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
Nguồn
2010-04-02 14:21:06
Cũng có thể viết thành ngữ hơn là 'mở rộng (T => Chuỗi) {' –