반응형
Notice
Recent Posts
Recent Comments
Link
불로구
[코틀린 기초] 8. 함수형 프로그래밍 본문
반응형
함수란?
- 여러 값을 받아 기능을 수행하고 결과값을 반환하는 코드의 모음
fun main(){
println(sum(10,20))
println(hello("홍길동"))
}
fun sum(a: Int , b: Int): Int{
return a + b
}
fun hello(name: String): String{
return name + "님 안녕하세요"
}
- fun이란 키워드로 함수 선언
- (sum , hello) 자리에 이름 작성
- 인자값 정의
- 반환값 정의
- 함수 본문 작성
- 값 반환
함수 호출과 메모리
- 함수가 호출 될 때 메모리는 어떻게 변화하는지 알아보자
fun main(){
var a: Int = 10
var b: Int = 20
var result = sum(a,b);
println(result)
}
fun sum(a:Int, b:Int) = a + b
스택은 LIFO라고 알고리즘 포스팅에서 언급한적이있다.
즉, MAIN실행 후 SUM함수가 실행되므로 MAIN위에 SUM이 스택자리를 차지하고 반환 후 사라진다
- 지역변수(함수 안에 변수)들은 함수가 종료되면 함께 스택 프레임에서 사라진다.
그럼 반환값이 없는 함수는 어떻게 사용할까?
fun main(){
Hello("홍길동")
}
fun Hello(name: String): Unit{
println(name + "님 안녕하세요")
}
간단하다. 우선 파라미터가 필요하다면 호출 시 값을 넣어주고 없으면 그냥 호출하면된다.
-> 반환되는 값이 없기에 일부로 println문을 사용했다.
함수의 매개변수 활용
- 만약 어떠한 값이 있을수도 있고 없을수도 있는 경우가 있다.
- 예를 들어 길동이는 동생이 있고, 지성이는 동생이 없는 경우처럼 말이다.
fun main(){
family("홍길동", "홍미자")
family("박지성")
family("김연아", "김연어")
println(sum())
println(sum(10,20))
}
fun family(name: String, bro: String = "default"){
println(name +"의 동생은 : " + bro)
}
fun sum(a:Int = 100, b:Int = 500) = a+b
홍길동의 동생은 : 홍미자
박지성의 동생은 : default
김연아의 동생은 : 김연어
600
30
로 표현할 수 있으며, 자신이 원하는 결과에 따라 수정할 수 있다.
막약에 sum의 파라미터가 a,b,c 3개인데 a,c만 입력하고 싶다면?
fun main(){
println(sum(a = 10,c = 20))
}
fun sum(a:Int = 100, b:Int = 500, c:Int=1000) = a+b+c
이렇게 지정해주면 된다.
매개변수가 고정되지 않는다면?
- vararg 키워드를 사용하자.
fun main(){
println(sum(10,20,30,40,50,60,70))
println(sum(10,20,30,40,50,60,70,80,90,100))
println(sum(10,20))
}
fun sum(vararg num:Int): Int{
var result: Int = 0
for(idx in num){
result += idx
}
return result
}
이렇게 varage키워드를 사용하고 foreach문을 통해 받은 파라미터의 개수만큼 연산을 수행할 수 있다.
반응형
'프로그래밍 > 코틀린' 카테고리의 다른 글
[코틀린 기초] 10. when 조건문 (0) | 2021.02.22 |
---|---|
[코틀린 기초] 9. 함수형 프로그래밍(2) (0) | 2021.02.15 |
[코틀린 기초]6. 자료형 (2) (0) | 2021.02.14 |
[코틀린 기초] 5. 자료형 비교 & 변환 (0) | 2021.02.09 |
[코틀린 기초] 4. 코틀린 NULL (0) | 2021.02.09 |
Comments