CS 지식/코딩테스트
탐색을 위한 Position Class
Julie825
2023. 1. 6. 16:23
data class Position(
var x: Int,
var y: Int,
) {
operator fun plus(other: Position): Position {
return Position(this.x + other.x, this.y + other.y)
}
// 깊은 복사에는 .copy 호출(data class에서 구현해줌)
}
enum class Direction(position: Position) {
TOP(Position(-1, 0)),
BOTTOM(Position(1, 0)),
LEFT(Position(0, -1)),
RIGHT(Position(0, 1))
}
* copy 사용시 주의할 점
: x, y에 Primitive type이 아닌 객체를 사용한다면, 직접 깊은 복사를 구현해야한다. copy() 메서드는 단순히 모든 속성을 =으로 할당하는 작업만 하기 때문이다. 재귀적으로 copy를 호출하지 않는다.
plus(+) 외의 다른 operation overload는 링크 참고