[Kotlin] 함수

백현균·2023년 4월 8일
0

1. 함수 선언 문법

fun max(a:Int, b:Int):Int{
	return if(a > b) a	
          else b
}

# 함수의 결과 값이 하나 일 경우, 이퀄(=)형태로 사용 가능
# 코틀린은 타입을 컴파일러에서 추론하기에, =을 사용할 경우 함수의 리턴 타입 생략 가능
# 
fun max(a:Int, b:int) = if(a > b) a else b

2. default Parameter

함수의 인자 값에 기본 값을 지정할 수 있음

자바에서는 default parameter을 제공하지 않아, 오버로딩을 이용해 개발자가 필요한 함수를 생성해야함

public void repeat(String str, int num, boolean useNumLine){
	...
}

public void repeat(String str, int num){
	repeat(str, num, true);
}

public void repeat(String str){
	repeat(str, 3, true);
}

자바와는 다르게 인자에 기본 값을 지정할 수 있음

# 함수에 인자가 없을 경우, 디폴트로 지정한 값으로 설정
fun repeat(String str, int num=3, boolean useNumLine=true){
	...
}

fun main(){
	repeat("test", 1);
    repeat("test");
}

3. named argument

다수의 디폴트 매개변 수 중 하나만 사용하고 싶을 경우에 사용

함수에서 지정된 매개변수의 이름을 입력 후 값 지정

코틀린에서 자바함수를 가져다 쓸 경우 사용 못함

 자바 코드가 바이트코드르 변환했을 때 JVM에서 인자의 이름을 보존하지 못해 사용 하지 못한다.
fun repeat(String str, int num=3, boolean useNumLine=true){
	...
}

fun main(){
	reapeat("test", useNumLine = false)
}

builder의 동일한 장점을 가질 수 있다

builder의 장점은 동일한 타입일 때 헷깔리지 않는다는 장점이 있음
ex) instance.name("abc").gender("female")
fun printNameAndGender(name:String, gender:String){
	...
}

fun main(){
	printNameAndGender(name = "test", gender="female")
}

4. 같은타입의 여러 파라미터 받기(가변인자)

자바에서 가변인자

# 인자에 개수가 몇개가 들어올지 모를 경우, 즉 n개의 인자를 받을 경우
public void pringString(String... strings){...}

코틀린에서 가변인자

매개변수 이름 앞에 vararg를 붙여주면, 배열형태로 인자로 들어온다

fun printAll(vararg strings:String){
	...
}

0개의 댓글