Kotlin/Variable and Function

    [Kotlin] var과 val의 차이는 무엇인가?

    변수란 무엇인가? 변수는 값(데이터)을 저장하는 메모리 공간에 붙은 이름이다. 이름처럼 고전적인 변수는 값을 읽고 쓰는 것을 모두 지원한다. 실제로 다른 프로그래밍 언어인 Java나 Python등에서는 변수를 만들면 값을 쓰고 읽을 수 있다. 하지만 변수의 값이 바뀔 수 있는 부분이 많아진다는 것은 프로그램에 오류가 일어날 수 있는 부분이 많아진다는 것을 뜻한다. 때문에 최근 함수형 프로그래밍 패러다임에서는 값의 불변성을 중요하게 다룬다. 이에 대해 코틀린은 값이 변할 수 있는 가변 변수인 변수(var)와 값이 변할 수 없는 불변 변수(val) 두가지의 변수를 지원한다. 코틀린에서 지원하는 변수의 종류 : var, val 코틀린에서 지원하는 변수의 종류는 다음과 같다. val: 불변(Immutable) ..

    [Kotlin] apply, run, with, let, also 차이 한 번에 정리하기

    범위 지정 함수(Scope function)란? 범위 지정 함수는 특정 객체에 대한 작업을 블록 안에 넣어 실행할 수 있도록 하는 함수이다. 블록은 특정 객체에 대해 할 작업의 범위가 되며, 따라서 범위 지정 함수라 부른다. 특정 객체에 대한 작업을 블록안에 넣게 되면 가독성이 증가하여 유지 보수가 쉬워진다. 코틀린에서는 let. run, apply. also, with 총 5가지 기본적인 범위 지정함수를 지원한다. 코틀린의 범위 지정 함수 1. apply 2. run 3. with 4. let 5. also 범위 지정함수와 수신객체 지정 람다(함수) 범위 지정함수는 다른 말로 수신객체 지정 람다(함수)라고도 부른다. 이유는 수신객체를 명시하지 않거나 it을 호출하는 것만으로 람다 안에서 수신객체의 메서..

    Kotlin의 val은 왜 엄밀한 의미의 불변 변수가 아닌가?

    Kotlin에서는 var을 읽기와 쓰기가 모두 가능한 가변 변수로 val을 읽기만 가능하면 불변 변수로 정의한다. 하지만, 실제로는 var은 물론 val 또한 엄밀한 의미의 불변이 아니다. 지금부터 이유를 알아보도록 하자. 변수에 값을 할당하는 것은 정확히 말하면 메모리 공간을 할당하는 것이다. 다음의 코드를 예시로 들어보자. val blogName = "Kotlin World" var date = "2021-10-02" 위의 코드를 실행하면 blogName이라는 변수값이 정해지고 해당 변수값을 참조했을 때 "Kotlin World"가 저장된 메모리 공간을 반환한다. date라는 변수값은 "2021-10-02"가 저장된 메모리 공간을 반환한다. var date = "2021-10-02" date = "2..

    Kotlin 블록(문)이 본문인 함수와 식이 본문인 함수

    목표 문과 식을 구분한다. 문이 본문인 함수와 식이 본문인 함수의 차이를 안다. 문(Statement)과 식(Expression)의 구분 식은 자바에서는 볼 수 없었던 코틀린의 특성이다. 자바의 함수는 문으로 이루어져 있으며, return이라는 키워드를 통해서만 값을 반환할 수 있었다. 문과 식의 차이를 살펴보자. 문(Statement) : 자신을 둘러싼 가장 안쪽 블록의 최상위 요소로 존재하며, 아무런 값을 만들어내지 않는다. 식(Expression) : 값을 만들어 내며, 다른 식의 하위 요소로 계산에 참여한다. *코틀린에서는 루프를 제외한 대부분의 제어 구조가 식이다. 블록(문)이 본문인 함수 본문이 중괄호 {} 로 둘러싸인 함수를 문이 블록이 본문인 함수라 부른다. 특징 블록이 본문인 함수는 타입..