함수 선언 문법
public
접근지시어는 생략 가능fun
: 함수를 의미함max
: 함수 이름(a: Int, b: Int)
매개변수 목록 표기: Int
반환타입 표기 (Unit - void는 생략가능)- 반환값이 하나일 경우 중괄호 생략 가능
- 사용시 모든 조건의 결과가 Int를 반환하므로 반환 타입까지 생략 가능
- 블럭{}을 사용할 경우 Unit 반환이 아니라면 반환 타입을 명시해 줘야한다.
- 함수 선언 위치
- 함수는 클래스 파일안에 있을 수도 있고 파일 최상단에 있을 수도 있음
- 한 파일(
.kt
)에 여러 함수들이 존재 할 수 있음
fun max(a: Int, b: Int): Int {
return if (a > b) a else b // expression
}
// 개선
fun max(a: Int, b: Int) = if (a > b) a else b
default parameter
- 함수 호출시 파라미터를 넣어주지 않는 경우
메서드에서 지정한 기본값을 사용
함 - Java의 오버로딩 메서드와 유사
fun repeat(
str: String,
num: Int = 3,
useNewLine: Boolean = true) { // 기본값 설정
for(i in 1..num) {
if (useNewLine) {
println(str)
} else {
print(str)
}
}
}
fun main(){
repeat("Hello World", 3, true)
repeat("Hello World") // default parameter
}
named argument
- 함수 호출 시
매개변수 이름을 통해 직접 지정
- 지정되지 않은 매개변수는 기본값을 사용
builder
를 직접 만들지 않고 builder 의 장점을 가져갈 수 있다.- 동일 타입의 파라미터가 있을때 순서가 실수로 달라져도 컴파일단에서 오류를 잡을 수 없음
named argument
를 사용할 경우 이러한 실수를 방지할 수 있다.
- Kotlin에서 Java함수를 사용할 때는 named argument 사용이 불가능하다.
- Java가 메서드를 바이트코드로 변환할때 파라미터 이름을 보존하지 않기 때문.
fun main(){
repeat("Hello World", 3, true)
// named argument
repeat("Hello World", useNewLine = false)
printNameAndGender("Jihun Park","M")
printNameAndGender(gender = "M", name="Jihun Park") // builder 처럼 사용 가능
}
fun printNameAndGender(name:String, gender: String){
println(name)
println(gender)
}
같은 타입의 여러 파라미터 받기(가변인자)
- Kotlin :
vararg
를 사용하여 가변인자 표기- 호출시 배열을 넣을 경우 spread 연산자
*
사용
- 호출시 배열을 넣을 경우 spread 연산자
- Java :
타입…
으로 가변인자 표기- 호출시 배열을 직접 넣거나 콤마 사용
/* Kotlin */
val array = arrayOf("A","B","C")
printAll(*array)
printAll("A","B","C")
fun printAll(vararg strings:String){
for (str in strings){
print(str)
}
}
/* java */
String[] strings = new String[]{"A","B","C"};
printAll(strings);
printAll("A","B","C");
public static void printAll(String... strings) {
for (String string : strings) {
System.out.println("string = " + string);
}
}
Reference
자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide) - 인프런 | 강의
이 강의를 통해 Kotlin 언어의 특성과 배경, 문법과 동작 원리, 사용 용례, Java와 Kotlin을 함께 사용할 때에 주의할 점 등을 배울 수 있습니다., - 강의 소개 | 인프런...
www.inflearn.com
'Program > Kotlin' 카테고리의 다른 글
[Kotlin] 7. 예외 처리 (try-catch, unchecked Exception, try with resources, use) (0) | 2022.09.27 |
---|---|
[Kotlin] 6. 반복문 (for, foreach, while, Progression, Range) (0) | 2022.09.13 |
[Kotlin] 5. 조건문(if, switch, when) (0) | 2022.09.13 |
[Kotlin] 4. 연산자 (단항연산자, 산술연산자, 비교연산자, 논리연산자, 동등성, 동일성, 연산자 오버로딩) (0) | 2022.09.13 |
[Kotlin] 3. Type (기본타입, 타입캐스팅, Any, Unit,Nothing, trimIndent) (1) | 2022.09.11 |