Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- chapter01
- SCPC
- 5397번
- Perceptron Convergence theorem
- Numerical optimization
- chapter02
- 이것이 MySQL이다
- bisection
- graphical models
- 델타 rule
- 근구하기
- 알고리즘대회
- 2018
- 스터디
- MySQL
- 알고리즘
- undirected graphical model
- 1차예선
- 선형판별분석
- falsePosition
- 로지스틱 회귀
- 인공지능
- 개발순서
- secant
- CH01
- directed graphical model
- vector미분
- 자바ORM표준JPA프로그래밍
- 선형분류
- Fisher discriminant analysis
Archives
- Today
- Total
computer_study
[Kotlin] 06. 특별한 클래스 사용하기 본문
1. 이넘 클래스
미리 정의된 상수들로 이뤄진 제한된 집합을 표현하는 특별한 클래스
// 코틀린
enum class WeekDay{
Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
// 함수, 프로퍼티, 주생성자, 부생성자, 초기화블록 등을 포함할 수 있다.
// 이넘상수 목록 뒤에 와야 하고, 위의 것들을 포함한다면 목록 뒤에 ;를 붙여야 한다.
}
fun WeekDay.isWorkDay() =
this == WeekDay.Saturday || this == WeekDay.Sunday
fun main(){
println(WeekDay.Monday.isWorkDay()) // false
}
// 자바 enum class가 아닌 enum으로
public enum WeekDay {
Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
}
when식 사용
자바 switch문은 이넘 값을 간단한 이름으로만 사용하지만 코틀린은 긴 이름으로 사용할 수 있다.
kotlin
import Direction.* // 이넘 상수를 임포트하면 짧은 이름으로 이넘상수 사용 가능
enum class Direction{
NORTH, SOUTH, WEST, EAST
}
fun rotateClockWise(direction: Direction) = when(direction){
NORTH -> EAST
EAST -> SOUTH
SOUTH -> WEST
WEST -> NORTH
}
java
public Direction rotateClockWise(Direction d){
switch (d){
case NORTH: return Direction.EAST;
case EAST: return Direction.SOUTH;
case SOUTH: return Direction.WEST;
case WEST: return Direction.NORTH;
}
...
}
2. 데이터 클래스
데이터를 저장하기 위한 목적으로 쓰이는 클래스
기능 사용 시 컴파일러가 동등성을 비교하거나 String으로 변환하는 등의 기본 연산에 대한 구현을 자동 생성한다.
class Person(val firstName: String,
val familyName: String,
val age: Int)
3. 인라인 클래스
// 코틀린 1.3까지는 inline 키워드 사용
inline class Password(val value: String)
val password = Password("Your password")
// 코틀린 1.5부턴 value로 키워드 변경
@JvmInline // JVM 백엔드를 사용하는 경우에 붙여준다.
value class Dollar(val amount: Int)
@JvmInline
value class Euro(val amount: Int)
// 자체 함수와 프로퍼티를 포함할 수 있다.
@JvmInline
inline class Dollar(val amount: Int){
fun add(d: Dollar) = Dollar(amount + d.amount)
val isDebt get() = amount < 0 //var도 가능하지만 인라인 클래스 내부에는 가변 상태가 없다(의미x)
}
fun main(){
println(Dollar(15).add(Dollar(2)).amount) // 35
}
'스터디 > 코틀린 완벽 가이드' 카테고리의 다른 글
[Kotlin] 08. 클래스 계층 이해하기 (0) | 2022.06.03 |
---|---|
[Kotlin] 07. 컬렉션과 I/O 자세히 알아보기 (0) | 2022.06.03 |
[Kotlin] 05. 고급 함수와 함수형 프로그래밍 활용하기 (0) | 2022.05.26 |
[Kotlin] 03. 함수 정의하기 (0) | 2022.05.19 |
[kotlin] 02. 코틀린 언어 기초 (0) | 2022.05.19 |
Comments