var result = square(10)
Log.d("fun", "10의 제곱은 ${result}입니다.")
2. 반환값이 없는 함수
Log.d("5 - 3은 ${printMinus(5,3)} 이다.")
3. 매개변수 없이 반환 값만 있는 함수
val PI = getPi()
Log.d("fun", "지름이 10인 원의 넓이는 ${10 * 10 * PI} 입니다.")
1.3 전체 예시 코드
package kr.co.ki.function
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 반환값과 입력값이 있는 함수
var result = square(10)
Log.d("fun", "10의 제곱은 ${result}입니다.")
// 반환값이 없는 함수
printMinus(5, 3)
// 매개변수 없이 반환값만 있는 함수
val PI = getPi()
Log.d("fun", "지름이 10인 원의 넓이는 ${10 * 10 * PI} 입니다.")
}
// 반환값과 입력값이 있는 함수
fun square(n: Int): Int {
return n*n
}
// 반환값이 없는 함수
fun printMinus(n1: Int, n2: Int) {
Log.d("fun", "n1 - n2 = ${n1 - n2}")
}
// 매개변수 없이 반환값만 있는 함수
fun getPi(): Double {
return 3.14
}
}
이 포스팅은 고돈호 님의 이것이 안드로이드다 with 코틀린(한빛미디어)을 기반으로 작성되었습니다.
1.1 for문
일반적인 언어들과 마찬가지로 코틀린 역시 반복문을 지닌다. 먼저 for문을 살펴보자. for문은 다음과 같은 형태로 작성한다.
for (인덱스 in 시작 값... 종료 값) { }
for문에 until, downTo 등을 통해 여러 가지 방법을 적용할 수 있다. 다음의 예시 코드를 통해 파악해보자
package kr.co.ki.collectionmap
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 1. 일반적인 반복문 10까지
for (i in 1..10) {
Log.d("For", "현재 숫자는 ${i}")
}
// 2. until로 마지막 숫자 제거
var array = arrayOf("SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT")
for (i in 0 until array.size) {
Log.d("For", "현재 요일은 ${array.get(i)} 입니다.")
}
// 3. step을 이용한 건너뛰기
for (i in 1..10 step 2) {
Log.d("For", "현재 숫자는 ${i}")
}
// 4. down to을 이용한 감소
for (i in 10 downTo 0) {
Log.d("For", "현재 숫자는 ${i}")
}
// 5. 배열, 컬렉션 사용
for (day in array) {
Log.d("For", "현재 요일은 ${day} 입니다.")
}
}
}
출력문은 다음과 같다.
2021-12-19 18:08:01.683 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 1 2021-12-19 18:08:01.683 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 2 2021-12-19 18:08:01.684 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 3 2021-12-19 18:08:01.684 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 4 2021-12-19 18:08:01.684 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 5 2021-12-19 18:08:01.684 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 6 2021-12-19 18:08:01.684 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 7 2021-12-19 18:08:01.684 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 8 2021-12-19 18:08:01.684 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 9 2021-12-19 18:08:01.684 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 10 2021-12-19 18:08:01.684 1665-1665/kr.co.ki.collectionmap D/For: 현재 요일은 SUN 입니다. 2021-12-19 18:08:01.685 1665-1665/kr.co.ki.collectionmap D/For: 현재 요일은 MON 입니다. 2021-12-19 18:08:01.685 1665-1665/kr.co.ki.collectionmap D/For: 현재 요일은 TUE 입니다. 2021-12-19 18:08:01.685 1665-1665/kr.co.ki.collectionmap D/For: 현재 요일은 WED 입니다. 2021-12-19 18:08:01.685 1665-1665/kr.co.ki.collectionmap D/For: 현재 요일은 THU 입니다. 2021-12-19 18:08:01.685 1665-1665/kr.co.ki.collectionmap D/For: 현재 요일은 FRI 입니다. 2021-12-19 18:08:01.685 1665-1665/kr.co.ki.collectionmap D/For: 현재 요일은 SAT 입니다. 2021-12-19 18:08:01.685 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 1 2021-12-19 18:08:01.686 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 3 2021-12-19 18:08:01.686 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 5 2021-12-19 18:08:01.686 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 7 2021-12-19 18:08:01.686 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 9 2021-12-19 18:08:01.686 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 10 2021-12-19 18:08:01.686 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 9 2021-12-19 18:08:01.686 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 8 2021-12-19 18:08:01.686 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 7 2021-12-19 18:08:01.686 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 6 2021-12-19 18:08:01.686 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 5 2021-12-19 18:08:01.687 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 4 2021-12-19 18:08:01.687 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 3 2021-12-19 18:08:01.687 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 2 2021-12-19 18:08:01.687 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 1 2021-12-19 18:08:01.687 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 0 2021-12-19 18:08:01.687 1665-1665/kr.co.ki.collectionmap D/For: 현재 요일은 SUN 입니다. 2021-12-19 18:08:01.687 1665-1665/kr.co.ki.collectionmap D/For: 현재 요일은 MON 입니다. 2021-12-19 18:08:01.687 1665-1665/kr.co.ki.collectionmap D/For: 현재 요일은 TUE 입니다. 2021-12-19 18:08:01.687 1665-1665/kr.co.ki.collectionmap D/For: 현재 요일은 WED 입니다. 2021-12-19 18:08:01.687 1665-1665/kr.co.ki.collectionmap D/For: 현재 요일은 THU 입니다. 2021-12-19 18:08:01.687 1665-1665/kr.co.ki.collectionmap D/For: 현재 요일은 FRI 입니다. 2021-12-19 18:08:01.688 1665-1665/kr.co.ki.collectionmap D/For: 현재 요일은 SAT 입니다.
2.1 while문
For문 이외에도 흔히 반복문으로 사용하는 while 역시 존재한다. For문의 사용법은 다음과 같다.
while (조건식) {
}
while문에는 while, do while문이 존재한다. 이 두 개의 가장 큰 차이점은 do while문은 조건을 만족하지 않으면 실행하지 않는 while문과 달리 무조건 한번 실행한다는 것이다.
package kr.co.ki.collectionmap
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var current = 1
var until = 12
while (current < until) {
Log.d("while", "현재 값은 ${current} 입니다.")
current = current + 1
}
var cnt = 1
do {
Log.d("while", "현재 값은 ${cnt} 입니다.")
cnt = cnt + 1
} while (cnt < 1)
}
}
결과는 다음과 같다. 다음의 그림에서 보이듯이 cnt가 1이고 cnt < 1을 조건으로 있음에도 불고하고 do while문이기 때문에 한 번은 돌아가는 것을 확인할 수 있다.
3.1 break & continue
그 밖에 break, continue문등의 제어문이 있다. 각각 루프문 탈출, 다음 반복문으로 이동하는 역할이다.