안드로이드 앱 개발에 코틀린을 사용하면, 언어의 특성과 장점을 최대한 활용할 수 있습니다. 이 글에서는 코틀린의 변수와 함수에 대해 자세히 설명하겠습니다. 기본적인 개념부터 실용적인 예제까지 다양한 내용을 다룰 예정입니다.
1. 변수의 개념
변수는 데이터를 저장하는 이름이 있는 공간입니다. 코틀린에서는 변수를 선언하는 방식이 간단하고 직관적입니다. 코틀린에서는 val
과 var
키워드를 사용하여 변수를 선언할 수 있습니다. val
은 변경할 수 없는(read-only) 변수를 만들고, var
은 변경 가능한(mutable) 변수를 만듭니다.
1.1. 불변 변수(val)
불변 변수는 한 번 값이 할당되면 변경할 수 없습니다. 다음은 불변 변수를 선언하는 예제입니다.
val pi: Double = 3.14159
위 코드에서 pi
는 불변 변수이며, 값이 한 번 할당되면 변경할 수 없습니다.
1.2. 가변 변수(var)
가변 변수는 필요에 따라 값을 변경할 수 있습니다. 다음은 가변 변수를 선언하는 예제입니다.
var count: Int = 0
count += 1
여기서 count
변수는 0으로 초기화되고, 이후에 값을 변경할 수 있습니다.
1.3. 타입 추론
코틀린에서는 변수의 타입을 명시하지 않고도 초기화할 때 타입을 추론할 수 있습니다.
val message = "Hello, Kotlin!"
위 코드에서 message
변수의 타입은 문자열(String
)로 자동으로 추론됩니다.
2. 함수의 개념
함수는 특정 작업을 수행하는 코드 블록입니다. 코틀린에서는 함수 선언이 간편하며, 고차 함수와 람다식과 같은 기능도 지원합니다.
2.1. 기본 함수 선언
함수를 선언하는 기본 문법은 다음과 같습니다.
fun 함수이름(매개변수: 타입): 반환타입 {
// 함수의 코드
}
아래는 두 개의 숫자를 더하는 함수의 예제입니다.
fun add(a: Int, b: Int): Int {
return a + b
}
이 함수는 두 개의 정수를 매개변수로 받아 그 합을 반환합니다.
2.2. 기본값을 가진 매개변수
코틀린에서는 함수의 매개변수에 기본값을 설정할 수 있습니다. 기본값이 설정된 매개변수는 호출 시 생략할 수 있습니다.
fun greet(name: String = "Guest") {
println("Hello, $name!")
}
위의 예제에서 greet
함수를 호출할 때 매개변수를 생략하면 “Guest”가 기본값으로 사용됩니다.
2.3. 고차 함수
코틀린에서는 함수를 매개변수로 전달하거나 반환할 수 있는 고차 함수를 지원합니다. 다음 예제를 보겠습니다.
fun operation(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
return operation(a, b)
}
여기서 operation
함수는 두 개의 정수를 입력받아 특정 연산을 수행하는 함수를 매개변수로 받습니다.
3. 예제 프로젝트: 간단한 계산기 앱
이제 위에서 배운 변수를 활용하고, 함수를 정의하여 간단한 계산기 앱을 만들어보겠습니다.
3.1. 프로젝트 설정
안드로이드 스튜디오에서 새로운 프로젝트를 생성합니다. 이 때 앱 이름을 “SimpleCalculator”로 설정하고, 기본 Activity를 선택합니다.
3.2. UI 구성
activity_main.xml 파일에서 아래와 같은 UI를 구성합니다.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<EditText
android:id="@+id/input1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="첫 번째 숫자"
android:inputType="numberDecimal"/>
<EditText
android:id="@+id/input2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="두 번째 숫자"
android:inputType="numberDecimal"/>
<Button
android:id="@+id/addButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="더하기"/>
<TextView
android:id="@+id/resultView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="결과 : "/>
</LinearLayout>
3.3. MainActivity.kt 코드
이제 MainActivity.kt
파일에 로직을 추가하겠습니다.
package com.example.simplecalculator
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val input1 = findViewById<EditText>(R.id.input1)
val input2 = findViewById<EditText>(R.id.input2)
val addButton = findViewById<Button>(R.id.addButton)
val resultView = findViewById<TextView>(R.id.resultView)
addButton.setOnClickListener {
val num1 = input1.text.toString().toDoubleOrNull() ?: 0.0
val num2 = input2.text.toString().toDoubleOrNull() ?: 0.0
val result = add(num1, num2)
resultView.text = "결과 : $result"
}
}
private fun add(a: Double, b: Double): Double {
return a + b
}
}
4. 결론
이번 글에서는 코틀린의 변수와 함수에 대해 자세히 살펴보았습니다. 변수를 통해 데이터를 저장하고, 함수를 통해 코드를 재사용할 수 있는 방법을 배우셨을 것입니다. 위의 간단한 계산기 앱 예제를 통해 실제 앱 개발에서 변수가 어떻게 사용되는지를 이해하셨기를 바랍니다. 앞으로도 코틀린을 활용한 다양한 앱 개발을 계속 진행하실 수 있기를 기대합니다!