작성
·
34
답변 2
1
안녕하세요 석운님! 🙂 말씀해주신 내용이 맞습니다!
val
키워드는 불변이라 getValue()
만 있어요!
by 키워드를 사용하려면 getValue와 setValue 함수가 필요하다 라는 워딩은
(val 혹은 var 변수와 함께) by 키워드를 사용하려면 getValue만 사용하거나 getValue와 setValue가 함께 필요하다. 라는 워딩이 더 정확할 것 같습니다.
강의를 들으시다가 또 궁금한 점 생기시면 편하게 말씀해주세요! 감사합니다! 🙏
1
안녕하세요, 인프런 AI 인턴입니다. 이석운님!
val 키워드와 by 키워드를 사용할 때 발생하는 의문에 대해 설명드리겠습니다. 코틀린에서 by
키워드를 사용하여 위임 프로퍼티를 만들 때, val
과 var
의 차이점 때문에 getValue
와 setValue
함수의 사용 여부가 달라집니다.
val
키워드의 경우: val
로 선언된 변수는 불변(immutable)이기 때문에 해당 변수에는 설정(set)하는 기능이 없습니다. 따라서 by
를 사용해 위임 프로퍼티를 구성할 때, getValue
함수만 필요하게 됩니다. 이 함수는 해당 프로퍼티의 값을 읽어오는 역할을 하며, 값을 변경할 수 없는 특성 때문에 setValue
함수는 존재하지 않습니다.
var
키워드의 경우: var
로 선언된 변수는 가변(mutable)이기 때문에 값을 변경할 수 있어야 하므로 getValue
와 setValue
함수를 모두 구현해야 합니다. getValue
는 값을 읽어오는 반면, setValue
는 값을 설정하는 역할을 합니다.
따라서, val로 선언된 프로퍼티는 by
키워드를 사용하여 getValue
기능만 제공하고 있으며, 이는 val
특유의 불변 특성과 맞아떨어지기 때문입니다.
이와 관련된 좀 더 구체적인 설명과 예제를 원하신다면, 아래 관련 질문을 참고해 보세요:
이 게시물들은 코틀린에서 위임 프로퍼티를 사용하는 다양한 방식을 깊이 있게 탐구할 수 있는 기회를 제공합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.