일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 원스휴먼 레시피
- 계엄령
- 원스휴먼 요리
- 계엄령 외신반응
- 레시피 파밍
- 원스휴먼 황금양
- 원스휴먼 먹이
- 홈플러스 시그니처 모카골드믹스커피
- 믹스커피
- 믹스커피추천
- 1203계엄령
- 2차 비상계엄
- 국방부
- 2차계엄
- 원스휴먼 레시피 파밍
- 유광버섯 통조림
- 일론머스크
- 원스휴먼 동물
- 윤석열
- 원스휴먼 스타크롬
- 원스휴먼 황금양 구하기
- 원달러환율
- 비상계엄령
- 홈플러스
- 시그니처
- 원스휴먼 황금양털파밍
- 커피추천
- 원스휴먼 사료
- 원스휴먼 쿠폰
- Today
- Total
0101011001010111
Kotlin - return에 대해 알아보자! 본문
fun main() {
println("첫 번째 숫자를 입력하세요:")
val firstNumber = readLine()?.toIntOrNull()
if (firstNumber == null) {
println("올바른 숫자를 입력해주세요.")
return
}
println("두 번째 숫자를 입력하세요:")
val secondNumber = readLine()?.toIntOrNull()
if (secondNumber == null) {
println("올바른 숫자를 입력해주세요.")
return
}
if (firstNumber > secondNumber) {
println("큰 숫자는 $firstNumber 입니다.")
} else if (secondNumber > firstNumber) {
println("큰 숫자는 $secondNumber 입니다.")
} else {
println("두 숫자는 같습니다.")
}
}
두 수중 큰 숫자 찾기 코딩을 하는 중에 return에 대해 궁금증이 생겼다.
과연 이 return은 어떻게 쓰는걸까
엄청난 걸 알아버렸다.
나만 몰랐던 return의 비밀!!!!!!!!
먼저, return은 내가 생각하기엔 실행된 값을 뱉어주는 역할이라고 생각했는데,
return은 3가지 기능이 있다.
첫번째는, 내가 생각했던것 처럼
1.함수 또는 메서드에서의 반환
fun add(a: Int, b: Int): Int {
return a + b
}
ㄴ 자 여기서 내가 간과했던 부분이 있었다.
a는 int라고 쓰여있고 b도 int라고 쓰여있어서 당연히 반환값인 :Int를 안써도 될 줄 알았다.
하지만 그러면 안된다!!!!!!!!
이유는 조금 있다가 2번을 보고 설명하겠다.
위 예시처럼 일단, return은 a+b값을 반환해줄 수 있다.
2. 함수 또는 메서드의 실행 중단
- 반환 값이 없는 함수('Unit'반환)나 메서드에서도 'return'을 사용하면 해당 함수나 메서드의 실행을 즉시 중단하고 호출한 곳으로 되돌아갑니다.
fun printPositiveNumber(number: Int) {
if (number < 0) {
println("Negative number!")
return
}
println(number)
}
ㄴ 여기서의 return은 실행 중단이다.!!!
어떤경우에는 반환을 하고, 어떤경우에는 중단을 하는지 !! 세부적으로 알아보자!
먼저 return에 대해 알아야 할 것.
▶ return은 함수에서만 쓰인다.
▶ return을 쓸 때, 반환값이 없다면!! 함수를 즉시 중단하고 호출한 곳으로 되돌아간다. [헷갈릴수 있으니 매우중요]
▼설명
방금 예시로 보여준 첫 코드에서는, 반환 값이 있다.
fun add(a: Int, b: Int): Int {
return a + b
}
그렇기 때문에, 값을 반환해주는 return이 되었다. // a+b
그런데... 똑같은 코드라도 반환값을 써주지 않거나, : Unit 이라면
ㄴ 반환값을 안써주는 거나 :Unit이나 같은 의미이다!
fun add(a: Int, b: Int) {
return a + b
}
▲ 이렇게 반환값이 없는 함수는 즉시 종료되며, 호출한 곳으로 돌아간다.
※종료의 범위 확인하기!!
자 이런 코드가 있다고 치자.
빨간색 if문에서 return이 발생했다고 치자.
이것은 함수를 종료 시키는 return이다
왜 종료 되었을까? 종료의 범위는 어디까지일까?
생각해보자.
▼왜 종료된거야?
1. 먼저 if문을 감싸고 있는 함수! main에 반환값이 없었다!!
fun main() {} < 이런식으로 되어있었기 때문에, 반환 값이 없어서 종료 되었다.
▼ 종료의 범위
종료의 범위는 함수! 이므로, return을 감싸고 있는 함수!! 즉 main함수가 통째로 종료 되게된다.
자 다음은 함수속에 함수속에 함수속에 중간에 return 들어가있고 또 함수가 있는 뭐 그런 형태이다!!
여기선 종료는 어떻게 될까 ?
▼종료의 범위
return은 해당 함수가 종료되는것이다
그러므로 함수 2와 함수 2안에들어있는 3이 종료되고,
종료된 곳으로 돌아가기때문에, 함수 1로 돌아가서 실행되게 된다!
세번째 return은
람다식에서의 반환: Kotlin의 람다에서는 return을 직접 사용하면 람다를 감싸고 있는 함수가 반환됩니다. 그러나 종종 람다 내부에서만 반환하고 싶을 때가 있습니다. 이럴 경우 return 뒤에 레이블을 붙여 특정 람다나 익명 함수에서만 반환할 수 있습니다. return@label 형식을 사용합니다.
fun listFilter() {
val numbers = listOf(1, 2, 3, 4, 5)
numbers.forEach {
if (it == 3) return@forEach // '3'일 때만 람다의 실행을 중단하고 다음 숫자로 넘어감
println(it)
}
}
나는 람다식도 모르니 이것에 대한 설명은 할 수 없다 !!!! 'ㅇ' 다음에 알게되면 정리하자
'Kotlin > [스스로]Kotlin&안드로이드' 카테고리의 다른 글
Android_Constraint Layout 방향 (0) | 2023.08.15 |
---|---|
Kotlin - 최소, 최대 값 구하기 min() max() (1) | 2023.08.10 |
Kotlin - APK가 강의에서 자주 나오는데 뭘까? (0) | 2023.08.08 |
Kotlin- 객체지향 프로그래밍 OOP의 강의를 듣고 나서 생각한 점 정리 (2) | 2023.08.03 |
Kotlin - 대체 Parameter // 패러미터 혹은 파라미터라고 불림 은 정확히 뭘 의미하는걸까 ? (0) | 2023.08.03 |