Infix operator với Type trong Scala
Thông thường với Method trong Scala thì bạn có thể dùng theo kiểu . hoặc là theo kiểu infix. Dưới đây mình có một ví dụ nhỏ như sau:
object Foo {
def bar(s: String) = println(s)
}
Foo.bar("hello") // thông thường
Foo bar "hello" // infix
Với một cách suy nghĩ hoàn toàn tương tự chúng ta có thể dùng Infix Notation cho Type Programming!
trait Foo[A, B]
type Test1 = Foo[Int, String] // thông thường
type Test2 = Int Foo String // infix
Chắc bạn nào chưa quen với Type Programming thì sẽ wtf, cơ mà bạn chỉ cần hiểu trong Type Programming thì: A B C tương đương với A[B,C] hay là Foo không chỉ là type mà còn là phép toán với type.
Sử dụng infix khi chúng ta có những type mang ý nghĩa hơn, ví dụ như nhìn vào type :: (hàm ý là append) trong shapeless thì chúng ta sẽ thấy dễ hiểu hơn
trait ::[A, B]
type Test3 = ::[Int, String]
type Test4 = Int :: String
>> Tham khảo thêm: Ba cách căn bản để chạy chương trình Scala