본문 바로가기

Data/Data Engineering

[Scala] Scala 언어 기초공부(2)

반응형

클래스

class Greeter(prefix: String, suffix: String){
  def greet(name: String): Unit = 
    println(prefix + name + suffix)
}

val greeter = new Greeter("Hello, ", "!")
greeter.greet("Scala developer")
# Hello, Scala developer!

케이스 클래스

case class Point(x: Int, y: Int)

# class 와 달리 new 키워드 없이 케이스 클래스를 인스턴스화 가능
val point = Point(1, 2)
val anotherPoint = Point(1, 2)
val yetAnotherPoint = Point(2, 2)

# 그리고 값으로 비교
if (point == anotherPoint){
  println("same")
} else {
  println("different")
}
# same

if (point == yetAnotherPoint){
  println("same")
} else {
  println("different")
}
# different

객체

객체는 자가 정의에 대한 단일 인스턴스다.

object 키워드로 객체를 정의

object IdFactory {
  private var counter = 0
  def create(): Int = {
    counter += 1
    counter # return
  }
}

val newId: Int = IdFactory.create()
println(newId) # 1
val newerId: Int = IdFactory.create()
println(newerId) # 2

 

반응형