"class A extends B with C"
- 이 때, C는 스칼라 언어에서 Trait라고 부르며, Java의 인터페이스와 유사하지만 구체적인 메서드 구현을 포함할 수 있다.
- 예시 코드는 다음과 같다
trait C {
def traitMethod(): Unit = {
println("This is a method from trait C")
}
}
class B {
def superClassMethod(): Unit = {
println("This is a method from class B")
}
}
class A extends B with C {
def classAMethod(): Unit = {
println("This is a method from class A")
}
}
object Main extends App {
val a = new A
a.superClassMethod() // This is a method from class B
a.traitMethod() // This is a method from trait C
a.classAMethod() // This is a method from class A
}
Object
- Scala Object는 싱글톤 객체임
- Spring Context에 속하게 되는 bean 객체들처럼 선언해두면 해당 객체의 def 함수는 프로그램의 어느 곳에서나 사용이 가능함
- 이때, 해당 객체들은 지연 생성 방식으로, 누군가 실제로 사용할 때에 생성됨
Pattern Matching
- 패턴에 대해 값을 확인하는 매커니즘
- Java의 switch 명령문보다 강력한 버전
- if/else 대신 사용할 수도 있음
- 예제는 다음과 같다
import scala.util.Random
val x: Int = Random.nextInt(10)
x match
case 0 => "zero"
case 1 => "one"
case 2 => "two"
case _ => "other"
- 해당 예제는 다음과 같이 함수화할 수도 있다.
def matchTest(x: Int): String = x match
case 1 => "one"
case 2 => "two"
case _ => "other"
matchTest(3) // returns other
matchTest(1) // returns one
Enumeration
- enum 클래스는 extends Enumeration을 통해 생성되며, 해당 값들은 Value()라는 함수를 통해 값을 선언한다
- 예시
object LnaCmdType extends Enumeration {
val OnlineStandbyControl = Value("$SWT")
val OnlineStandbyControlSecondForm = Value("$SWP")
val AutoManualControl = Value("$MOD")
val AutoManualControlSecondForm = Value("$MOU")
val CurrentLimitChangeAlarm = Value("?LIM")
val ModeChangeAlarm = Value("?MOD")
val ModeChangeAlarmSecondForm = Value("?MOR")
val AmplifierOnlineAlarm = Value("?SWT")
val AmplifierOnlineAlarmSecondForm = Value("?SWS")
val DateTimeChangeAlarm = Value("?CLK")
val AmplifierFaultAlarm = Value("Q")
함수의 인자
- `def create(cmdType: LnaCmdType.Value, param: Any = ""): LnaCmd` 코드에서 param 인자의 "Any" 와 = "" 의 의미가 무엇인가에 대한 고찰
- Any는 scala의 최상위 타입으로, 모든 타입이 될 수 있도록 설정한 것임
- = "" 는 해당 값의 초기 값, default 값을 생성한 것임
'프로그래밍' 카테고리의 다른 글
test post title (0) | 2024.07.29 |
---|---|
[Gitistory] Chrome driver를 통해 소프트웨어로 블로그 자동 로그인하기 (7) | 2024.07.29 |
Flask로 개발 프로젝트 시작하기 (0) | 2024.07.29 |
[SCALA] 스칼라란? (0) | 2024.07.12 |
[TIL] 객체 지향 프로그래밍(OOP)이란 ? (feat. 객체지향 5원칙 - SOLID) (1) | 2024.03.30 |