Tôi thấy bây giờ mà có một câu hỏi liên quan yêu cầu những gì các nhà khai thác (<: <, <% <, =: =) làm ở đây:Làm thế nào để thực hiện Scala chính xác của <: <, <% <, =: = làm việc trong trình biên dịch?
What do <:<, <%<, and =:= mean in Scala 2.8, and where are they documented?
Nhưng tôi vẫn bối rối về việc thực hiện. Cụ thể, tôi giả sử rằng khi bạn đã đặt một thông số tiềm ẩn xác nhận mối quan hệ cụ thể, thì bạn có thể sử dụng các biến như thể chúng đã được tự động truyền đúng cách, ví dụ: điều này sẽ biên dịch:
class Foo[T](a: T) {
def splitit(implicit ev: T <:< String) = a split " "
}
Nhưng điều này thực sự hoạt động như thế nào trong trình biên dịch? Có một số hỗ trợ trình biên dịch ma thuật cho các nhà khai thác này, và nếu không, cơ chế cơ bản cho phép nó suy ra loại quan hệ này từ định nghĩa là gì? (Có phải cơ chế này được thêm vào đặc biệt để cho phép các toán tử này hoạt động và cụ thể như thế nào đối với các toán tử cụ thể này không?) Có vẻ như một chút phép thuật là bạn có thể đặt một tham số ngầm định như thế này.
Nguồn cho chúng https://github.com/scala/scala/blob/v2.9.2/src/library/scala/Predef.scala#L394 – pedrofurla