Infix operator với Type trong Scala

176
07-03-2018
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

TAGS: scala
SHARE