4. Trong một scope nhưng có nhiều conversion có thể áp dụng

  • Với scala 2.7 trở về trước, khi gặp trường hợp này compiler sẽ throw ra lỗi ambiguous. Vì nó không biết chọn cái nào để aply. (Nó cũng tương tự overloading. khi có 2 method giống hệt nhau thì compiler sẽ báo lỗi.)
  • Với scala 2.8 trở đi thì compiler sẽ chọn ra một implicit mà nó rõ ràng hơn để sử dụng

Tuy nhiên dù thế nào đi nữa, chúng ta nên chỉ định rõ ràng implicit nào được sử dụng để tránh confuse.

5. Tổng kết.

Implicit rất mạnh mẽ và được sử dụng rất rộng rãi. Gần như trong tất cả libraries, 3rd đều sử dụng nó. Nó có các lợi ích sau:

  • Có thể giúp bạn thêm các fields, method cho các class mà bạn muốn.
  • Giúp code ngắn gọn hơn
  • Reuse code tốt hơn.

Bên cạnh nó nếu lạm dụng thì code sẽ trở lên khó hiểu, và khó debug. Vì thế NẾU KHÔNG CÒN LỰA CHỌN NÀO KHÁC THÌ HÃY SỬ DỤNG IMPLICIT