2장 코드 연동
Netbean를 이용한 Creating JPA entities and REST web services 구축은 skip...
Adding a test in Scala
Add 'scalatest' library in build.sbt
libraryDependencies += "org.scalatest" % "scalatest_2.10" % "2.0" % "test"
Trait
- Trait은 다른 클래스가 확장 or 상속 하거나 섞어 넣을 수 있는(Mix in) field와 method 모음
 - 클래스는 여러 트레잇를 with 키워드를 사용해 확장할 수 있다.
 
trait Car {
  val brand: String
}
trait Shiny {
  val shineRefraction: Int
}
class BMW extends Car {
  val brand = "BMW"
}
class BMW extends Car with Shiny {
  val brand = "BMW"
  val shineRefraction = 12
}
Factory Method
- Factory method case 1 : Case class
 
case class Customer(val name:String)
- Factory method case 2 : Companion objects
 
object Customer {
   def apply()= new Customer("default name")
}
class Customer(name:String) {
 ...
}
Exception
- catch문 안에서의 return value에 주의
 - Either, Failure, Success 등의 객체를 이용해 처리
 
Code layout & Naming conventions
- camel case
 - constants - upper camel case
 
object Constants {
    val MyNeverChangingAge = 20 //constants
}