fun pop(register:Boolean, value:Int, index:Int): List<Any> {
if (index == 0) {
println("Empty")
} else {
index -= 1
register = true
value = stack[index]
}
return listOf(register, value, index)
}
다음과 같은 함수가 있다고 가정합니다.
이 때 매개변수인 register, val, index를 수정할 수 있을까요?
아쉽게도 Kotlin에서 매개변수는 val
로 선언이 되어 수정할 수 없습니다.
Kotlin: Val cannot be reassigned
에러 상황 확인 : 3가지 매개변수 모두 val
로 선언되는 것을 확인했습니다.
Kotlin의 매개변수 자료형 인지 :
인터넷에 검색 → Kotlin의 매개변수는 val
로 선언된다는 것을 인지했습니다.
새로운 변수를 선언하여 문제 해결 :
매개변수 앞에 _
를 붙여서 함수에 받았습니다.
→ 새로운 변수 var
을 선언했습니다.
→ 새로운 변수로 값을 변경한 후
→ 변경된 값을 반환하였습니다.
fun pop(_register:Boolean, _value:Int, _index:Int): List<Any> {
var register = _register
var value = _value
var index = _index
if (index == 0) {
println("Empty")
} else {
index -= 1
register = true
value = stack[index]
}
return listOf(register, value, index)
}
참고 : https://blog.jetbrains.com/kotlin/2013/02/kotlin-m5-1/
(원래 Kotlin의 매개변수는 일부분 변경 가능하였으나, Kotlin M5.1부터 모든 변수는 Immutable(변경 불가능)하게 되었습니다.)
언어의 규칙을 잘 알아보고 항상 Clean Code를 작성하자!🎉