ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Scala Traits(트레잇)
    Scala 2014. 6. 6. 09:00
    반응형

    스칼라는 기본적으로 하나의 슈퍼클래스만 가질수 있음.
    여러개를 상속하기위해서는 자바의 인터페이스처럼 트레잇을 사용하면 됨.
    트레잇이 자바 인터페이스와 다른점은 메소드를 선언하는것뿐만 아니라 구현을해도 된다는점.

    trait Similarity {
      def isSimilar(x: Any): Boolean
      def isNotSimilar(x: Any): Boolean = !isSimilar(x)
    }
    
    class Point(xc: Int, yc: Int) extends Similarity {
      var x: Int = xc
      var y: Int = yc
      def isSimilar(obj: Any) =
        obj.isInstanceOf[Point] &&
        obj.asInstanceOf[Point].x == x
    }
    
    object TraitsTest {
      val p1 = new Point(2, 3)                        //]] > p1  : Point = Point@790417ad
      val p2 = new Point(2, 4)                        //]] > p2  : Point = Point@74e60a5e
      val p3 = new Point(3, 3)                        //]] > p3  : Point = Point@2ab2dd47
     
      println(p1.isSimilar(p1))                       //]] > true
      println(p1.isNotSimilar(p2))                    //]] > false
      println(p1.isNotSimilar(p3))                    //]] > true
      println(p1.isNotSimilar(2))                     //]] > true
    }
    
    반응형

    'Scala' 카테고리의 다른 글

    Scala Pattern Matching(패턴매칭)  (0) 2014.06.13
    Scala Currying(커링)  (0) 2014.06.11
    Scala Class, Object(클래스, 오브젝트)  (0) 2014.06.02
    Scala 함수  (0) 2014.05.30
    Scala 루프구문  (0) 2014.05.28

    댓글

Designed by Tistory.