Lỗi biên dịch bạn nhận được về cơ bản nói rằng không thể sử dụng giới hạn ngữ cảnh cho bí danh loại. Bối cảnh giới hạn làm việc trong các định nghĩa hàm hoặc lớp. Ví dụ,
class BST[T: Ordering](val tree: Tree[T])
thực sự là ký hiệu viết tắt cho
class BST[T](val tree: Tree[T])(implicit ordering: Ordering[T])
Lưu ý rằng khác nhau BST
đối tượng tiềm năng có thể có khác nhau Ordering
s, và những giá trị phải được lưu trữ trong thời gian chạy.
Đối với trường hợp sử dụng của bạn, điều đơn giản nhất có thể là để đặt bối cảnh bị ràng buộc về chức năng chung mà bạn có trong tâm trí,
def f[T: Ordering](t1: Tree[T], t2: Tree[T]) {
import scala.math.Ordering.Implicits._
t1.get.entry < t2.get.entry
}
Sau đó thích hợp Ordering[T]
ngầm sẽ được tìm thấy tại trang web tiếng gọi của f
, trong đó loại T
được biết.
Nguồn
2013-03-28 01:38:33
Bạn có nghĩa là "Ký hiệu viết tắt cho:' lớp BST [T] (val cây: Cây [T]) (thứ tự ngầm định: Đặt hàng [T]) '" – Faiz
@Faiz, cảm ơn cố định. –