/ The Blog of Jinho Ko / Computer science / Programming

·

1 min read

Scala Project를 수행하며 배운 것들

By Jinho Ko
  1. case class 는 주로 패턴매칭을 위해 쓰임. 상세한 enum같은 거랄까?
  2. 어떤 class의 static member는 같은 이름의 companion object을 같이 만들어서 처리.
    • class A() { non-static } / object A { static definitions }
  3. Prefer composition over inheritance
    • Trait은 composition을 구현하기 아주 용이함 (multiple inheritance case)
  4. trait은 어떤 객체의 성질을 표현하기 좋음
    • 이 객체가 이러이러한 성질을 가진다 - 를 java의 interface보다 더 유연하게 기술할 수 있음.
    • trait mixin → 성질의 composition!이다.
    • interface에 비해 작성 부담이 덜하다.
      • trait을 작성하면서 설계와 함께 코딩을 진행하는 느낌이랄까?
  5. Scala는 따로 생성자가 없고, class 정의 자체가 생성자임. ⇒ 생성자에서 함수 정의를 다 하는 꼴.
  6. Protobuf 자주 이용하면 좋을듯 (scalaPb)
  7. serialization in scala/java
    • serializable class must be defined as final , and should only contain serializable classes
      • final ⇒ 그 클래스가 더이상 자식에 의해 상속될 수 없음.
    • 반면, 그 클래스가 어떤 부모 클래스를 상속한다면, 부모 클래스에는 당연히 final 이 붙으면 안되겠지?
    • the class should extend java.io.Serializable
  8. Multiple constructor
    • apply() function의 overloading으로 해결 link
  9. 자바에서 커먼 펑션 쓸거면 interface 정의 후 inheritance hierarchy를 써야되는데 매우 비효율적임. Scala에서는 바로 trait에 함수 구현해도 됨. 필요하면 override!
last modified June 2, 2024
comments powered by Disqus

© Copyright 2024. Jinho Ko. All rights reserved. Last updated: June 02, 2024.