티스토리 뷰
전역 변수와 지역 변수를 알아봅시다.
바로 예문을 통해 이해해 봅시다.
var finalReward: Int = 1000
fun main(args: Array<String>){
val round = Round("나도전")
println(round.firstRound())
println(round.secondRound())
println(round.name)
println(finalReward)
}
class Round(var name: String){
fun firstRound():Int{
var firstReward = 0
name = "나도전"
firstReward = 500
finalReward = 1000
fun miniRound(): Int{
var roundBonus: Int = 0
roundBonus = 200
firstReward = 500
finalReward = 1000
return roundBonus
}
return finalReward + firstReward + miniRound()
}
fun secondRound(): Int{
var secondReward: Int = 0
name = "나도전"
secondReward = 800
finalReward = 1000
return finalReward + secondReward
}
}
위의 예문에서 가정을 합니다. 테스트에 참가하는 도전자들이 최종 상금을 획득하고, 첫 라운드에는 미니 라운드가 있다고 가정해 봅니다.
메인 함수 밖에 선언된 finalReward는 전역 변수입니다. 따라서 메인 함수를 포함한, 기타 다른 클래스에서 모두 해당 변수를 참조할 수 있습니다.
name을 받는 Round 클래스는 firstRound, secondRound 함수를 가지고 있습니다. firstRound 함수 내에는 또 miniRound 함수가 존재합니다.
출력값은 다음과 같습니다.
1700
1800
나도전
1000
finalReward는 전역 변수로 첫 번째, 두 번째 라운드에서 참조가 가능한 값입니다.
하지만 firstReward, secondReward는 각 라운드에서만 쓰이는 상금입니다. 메인 함수에서 참조할 수 없습니다.
firstRound 내의 miniRound에서 주는 roundBonus는 미니 라운드에서 주는 상금이므로, 첫 번째 라운드와 두 번째 라운드, 메인 함수에서는 참조가 불가능합니다.
이를 통해 알 수 있듯이, 전역 변수는 모든 함수에서 참조 가능한 변수입니다. 지역 변수는 해당 함수 내에서만 유효하며, 다른 외부 함수에서는 참조하지 못하는 변수입니다.
미니 라운드에서 firstReward, finalReward를 모두 참조 가능한 이유는 미니 라운드 함수 입장에서 두 변수 모두 전역 변수이기 때문입니다.
하지만 firstRound 입장에서 roundBonus는 지역 변수이므로 참조하지 못합니다. 한 클래스에 변수명이 동일하고, 전역 변수와 지역 변수로 동시에 존재할 경우, 메인 함수에서 해당 변수를 불러올 때는 지역 변수가 불러옵니다.
변수를 선언 시 항상 접근 범위를 지역 변수 -> 전역 변수 순으로 범위를 작게 만드는 것이 좋습니다. 범위를 처음부터 전역 변수처럼 만들어 놓으면, 쓰이지 않아야 할 곳에서도 변수 접근이 가능해지므로 보안상 좋지 않습니다.
'Kotlin' 카테고리의 다른 글
코틀린 상속 Kotlin Inheritance (0) | 2021.07.06 |
---|---|
코틀린 접근제어자 Kotlin Access Modifier (0) | 2021.07.06 |
코틀린 클래스 Kotlin Class (0) | 2021.07.06 |
코틀린 반복문 2편 Kotlin Iterators (0) | 2021.07.06 |
코틀린 반복문 Kotlin Iterators (0) | 2021.07.06 |
- Total
- Today
- Yesterday
- 상대적 레이아웃
- 안드로이드 어댑터
- 메소드 오버라이딩
- 2019년 사건사고
- 자바스크립트 배열
- ToDo List 앱 만들기
- 대한민국 미제사건
- 애드뷰
- 리스트뷰
- notifyDataSetChanged
- 인텐트
- findViewById
- addView
- RecyclerView
- tabLayout
- view binding
- 2021년 사건사고
- 미제사건
- Bmi Calculator
- lazy init
- 선형 레이아웃
- bmi 계산기 만들기
- android adapter
- 안드로이드 앱 만들기
- 안드로이드 스튜디오 에러
- 2007년 사건사고
- 리사이클러뷰
- 탭레이아웃
- 뷰 바인딩
- 안드로이드 프로젝트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |