ยังขำที่โปรแกรม ruby แรกที่เขียน ก็พยายามจะ define interface ทั้งๆที่ ruby มันไม่มี interface แถมยังทำ duck typing ได้
วันก่อนอ่านเจอ feature ของ scala ที่ชื่อ Structural types ใน Scala
รู้สึกว่า งามจริงๆ
ดูตัวอย่างการใช้ Structural Type
class Person {
def say():String = "hi"
}
class Duck {
def say():String = "Quack"
}
object Test {
def play(element: {def say():String}) = {
System.out.println(element.say());
}
def main(args : Array[String]) : Unit = {
play(new Person())
play(new Duck())
}
}
Note: สำหรับคนที่ไม่คุ้นกับ Scala
def คือการกำหนด method, เครื่องหมาย : คือการกำหนด type
กรณี code ข้างล่างนี้, method say มี return type เป็น String
def say():String = "Quack"
ส่วน
Object {...}
ก็คือ Singleton Object