728x90
반응형
오버로딩
: 같은 스코프 안에서 같은 이름의 함수를 여러 개 만들 수 있는 기능. 함수의 이름이 같더라도 파라미터의 타입이나 개수가 다르면 서로 다른 함수로 동작한다.
* 파라미터의 이름만 다르고 자료형과 개수가 동일하다면 오버로딩을 할 수 없다.
fun same(a: Int, b: Int)
fun same(x: Int, y: Int)
fun main(){
read(7) // 숫자 7 입니다
read("감사합니다") // 감사합니다
}
fun read(x: Int){
println("숫자 $x 입니다")
}
fun read(x: String){
println(x)
}
default arguments
: 파라미터를 받아야 하는 함수이지만 별다른 파라미터가 없더라도 기본값으로 동작
fun main(){
deliveryItem("짬뽕") // 짬뽕, 1개를 집에 배달하였습니다
deliveryItem("책", 3) // 책, 3개를 집에 배달하였습니다
deliveryItem("노트북", 30, "학교") // 노트북, 30개를 학교에 배달하였습니다
}
fun deliveryItem(name: String, count: Int = 1, destination: String = "집"){
println("${name}, ${count}개를 ${destination}에 배달하였습니다")
}
이름과 목적지만 넣고 개수는 기본값을 이용하고 싶다면?? (중간 파라미터를 비울 수 없음)
named arguments
: 파라미터의 순서와 관계없이 파라미터의 이름을 사용하여 직접 파라미터의 값을 할당하는 기능
fun main(){
deliveryItem("선물", destination = "친구집") // 선물, 1개를 친구집에 배달하였습니다
}
fun deliveryItem(name: String, count: Int = 1, destination: String = "집"){
println("${name}, ${count}개를 ${destination}에 배달하였습니다")
}
variable number of arguments (vararg)
: 같은 자료형을 개수에 상관없이 파라미터로 받고 싶을 때 사용
fun main(){
sum(1, 2, 3, 4) // 10
}
fun sum(vararg numbers: Int){
var sum = 0
for(n in numbers){
sum += n
}
print(sum)
}
* vararg는 개수가 지정되지 않은 파라미터라는 특징이 있으므로 다른 파라미터와 같이 쓸 때는 반드시 맨 마지막에 위치해야 한다.
fun sample(text: String, vararg x: Int)
infix function
fun main(){
println(6 multiply 4) // 24
println(6.multiply(4)) // 24
}
infix fun Int.multiply(x: Int): Int = this * x
좌측에 붙은 6은 infix 함수가 적용되는 객체 자신(this), 우측에 붙은 4는 파라미터인 x에 해당됨
* class 안에서 infix 함수를 선언할 때에는 적용할 클래스가 자기 자신이므로 클래스 이름은 쓰지 않는다.
infix fun multiply(x: Int): Int = this * x
728x90
반응형
'Language > Kotlin' 카테고리의 다른 글
[Kotlin] Data Class와 Enum Class (0) | 2023.09.21 |
---|---|
[Kotlin] 중첩클래스와 내부클래스 (0) | 2023.09.20 |
[Kotlin] null 처리와 동일성의 확인 (0) | 2023.09.19 |
[Kotlin] 문자열 함수 (0) | 2023.09.18 |
[Kotlin] 컬렉션(1) 리스트 (0) | 2023.09.18 |