[코틀린 스터디 05] 0606

ssook·2021년 6월 6일
0
post-thumbnail

✅ 함수란

  • 특정 기능을 수행하는 box
  • 어떤 내용을 입력하면, 출력을 통해 결과를 가져옴. 물론 인자나, 반환 값 없이 출력과 같은 동작을 수행하기도 함.

✅ 함수의 선언

  • main도 함수로 프로그램의 시작점을 가리키는 역할을 한다.
  • main 함수 외에도 아래 예시와 같이 여러 함수를 만들 수 있다.
fun sum(a: Int, b: Int): Int{
	var sum = a+b
    return sum
}

kotlin에서의 함수 형태

fun 함수이름(인자: 생략가능): 반환값의 자료형(반환타입, 반환값 없을 시 Unit으로){
	함수 실행문
    return 반환값(생략가능)
}

잠깐! Unit과 void
Kotlin에서 반환 값이 없을 때 함수의 반환 타입으로 Unit을 넣어준다.
이때 Unit은 Java의 void와 같은 역할을 수행한다.
하지만, void는 말 그대로 아무 것도 없는 값을 반환한다면 Unit은 Unit 값을 반환한다는 것이 차이점.

✅ 함수의 return문이 1개일 경우

  • kotlin은 함수의 return 문이 1개일 경우 아래와 같이 간략하게 표현할 수 있다.
fun sum(a: Int, b:Int): Int = a+b
  • 여기서 kotlin은 타입 추론이 가능하므로 반환 타입 Int도 생략가능하다. 그럼 최종적으로는 아래와 같이 표현할 수 있다.
fun sum(a: Int, b:Int) = a+b

✅ 최상위 함수(Top-level)

  • kotlin은 Java와 다르게 최상위 수준에 함수와 property 설정 가능
  • class나 다른 함수 내부에 있는 것이 아닌 가장 밖에 있는 함수
  • 최상위 함수는 어디에 위치하든 다른 함수 내부에서 읽고 호출할 수 있음.
    cf) 지역함수 : 특정 함수 내부에만 위치한 함수, 이 경우 함수 내부에서만 사용 가능하다.

✅ 매개변수와 인자

  • 매개변수(parameter) : 함수를 선언할 때 사용하는 변수
  • 인자 : 함수 내부에서 사용하는 매개변수 = 인자
  • 보통 매개변수와 인자를 혼용해서 사용하지만, 엄밀히 따지자면 사용하는 시기에 따라 다르다.
    아래는 예시.
fun max(a: Int, b: Int): Int { //여기서 a,b는 매개변수
	return if(a>b) a else b
}

fun main(){
	val a = 3
    val b = 5
    val result = max(a,b) //여기서 a,b는 인자
    println(result)
}
  • 인자의 값이 매개변수에 복사되어 사용 (Call by Value)

✅ 반환 타입이 없는(Unit) 함수

  • kotlin에서 반환 타입이 없는 함수에게는 Unit을 사용한다.
  • 아래 예시는 딱히 반환하는 데이터 없이 출력만 하는 함수.
fun outfunc(name: String): Unit {
	println("Name": $name")	
} //return 문이 없어 보이나 return Unit이 생략된 것

fun main(){
println(outfunc())
}

✅ 매개변수에 default 설정

  • 매개변수에 특정 값이 들어오지 않으면 초기에 설정한 default 값으로 자동으로 설정된다.
fun sum(a: Int=3, b: Int=5) = a+b //특정 값을 지정하지 않으면 자동으로 a=3이, b=5가 지정됨

fun main(){
val result= sum(b=2) //매개변수에 default 값이 설정된 함수에 특정 인자 값만 넣기 위해서는, 지정할 인자와 특정 값만 넣으면 됨.
}

✅ 가변형 인자

  • 함수 인자의 개수가 결정되지 않은 상태라면, 매번 인자 개수만큼 함수를 만들어내기엔 비효율적 → 가변형 인자 등장
  • 가변형 인자로 매개변수를 지정하고 싶을 때는 매개변수의 자료형을 Vararg로 하면 됨.
fun norVararg(Vararg a: Int){ //Vararg형으로 들어온 인자는 하나 이상의 인자를 받아들일 수 있게 됨.
	for(num in a){
    	println(num)
    }
}
fun main(){
	norVararg(1)
    norVararg(1,2,3,4)
}
profile
1년차 주니어 개발자입니다~~~~

0개의 댓글