'case class'에 해당되는 글 2건

  1. 2013.02.06 case class 2번째 이야기.
  2. 2012.07.19 case class

case class 2번째 이야기.

language/scala 2013.02.06 14:17 posted by dev.bistro

http://korean-nerdism.blogspot.kr/2012/12/scala-pattern-matching-case-class.html?spref=tw 를 보고 '아차' 놓친게 있나 보다.


CaseClassExample.scala

case class ClassExample(message: String)


ClassExample.scala

class ClassExample(message: String)

두개의 파일을 작성하고,  scalac 로 class파일을 생성하였다.


결과는 총 3개의 class파일이 나온다. CaseClassExample$ 가 컴패니언 클래스의 output으로 보인다. (마치 자바의 inner class처럼 $를 달고 

            1,481 CaseClassExample$.class

            3,901 CaseClassExample.class

              642 ClassExample.class


javap의 결과는 

C:\MyProject>javap ClassExample CaseClassExample$ CaseClassExample

Compiled from "ClassExample.scala"

public class ClassExample extends java.lang.Object{

    public ClassExample(java.lang.String);

}


Compiled from "CaseClassExample.scala"

public final class CaseClassExample$ extends scala.runtime.AbstractFunction1 implements scala.Serializable{

    public static final CaseClassExample$ MODULE$;

    public static {};

    public final java.lang.String toString();

    public CaseClassExample apply(java.lang.String);

    public scala.Option unapply(CaseClassExample);

    public java.lang.Object apply(java.lang.Object);

}


Compiled from "CaseClassExample.scala"

public class CaseClassExample extends java.lang.Object implements scala.Product,scala.Serializable{

    public static scala.Function1 andThen(scala.Function1);

    public static scala.Function1 compose(scala.Function1);

    public java.lang.String message();

    public CaseClassExample copy(java.lang.String);

    public java.lang.String copy$default$1();

    public java.lang.String productPrefix();

    public int productArity();

    public java.lang.Object productElement(int);

    public scala.collection.Iterator productIterator();

    public boolean canEqual(java.lang.Object);

    public java.lang.String _1();

    public int hashCode();

    public java.lang.String toString();

    public boolean equals(java.lang.Object);

    public CaseClassExample(java.lang.String);

}



companion class file 에서는 apply, unapply 가 보이고 original class file 에서는 copy, andThen등의 몇가지 메소드가 추가적으로 보임을 알 수 있다. 

신고

'language > scala' 카테고리의 다른 글

Functional Programming Principles in Scala 끝!  (1) 2013.06.04
Scala Tuple  (0) 2013.03.12
2.10을 위한 scala-ide plugin 재설치  (0) 2013.03.12
case class 2번째 이야기.  (0) 2013.02.06
Play framework IDE, Scala Build Sublime  (0) 2013.02.06
case class  (0) 2012.07.19

case class

language/scala 2012.07.19 13:35 posted by dev.bistro

case 가 있을 경우

case class Person(name:String, age:Int)
	Compiled from "helo.scala"

public class Person extends java.lang.Object 
	implements scala.Product,scala.Serializable{
    public static final scala.Function1 tupled();
    public static final scala.Function1 curry();
    public static final scala.Function1 curried();
    public scala.collection.Iterator productIterator();
    public scala.collection.Iterator productElements();

    public java.lang.String name();
    public int age();
    public Person copy(java.lang.String, int);
    public int copy$default$2();
    public java.lang.String copy$default$1();

    public int hashCode();
    public java.lang.String toString();
    public boolean equals(java.lang.Object);
    public java.lang.String productPrefix();
    public int productArity();

    public java.lang.Object productElement(int);
    public boolean canEqual(java.lang.Object);
    public Person(java.lang.String, int);
}

case가 없을 경우


class Person(name:String, age:Int)
Compiled from "helo.scala"
public class Person extends java.lang.Object implements scala.ScalaObject{
    public Person(java.lang.String, int);
}

참고 : http://www.ibm.com/developerworks/kr/library/j-scala08268.html
신고

'language > scala' 카테고리의 다른 글

Functional Programming Principles in Scala 끝!  (1) 2013.06.04
Scala Tuple  (0) 2013.03.12
2.10을 위한 scala-ide plugin 재설치  (0) 2013.03.12
case class 2번째 이야기.  (0) 2013.02.06
Play framework IDE, Scala Build Sublime  (0) 2013.02.06
case class  (0) 2012.07.19


티스토리 툴바