본문 바로가기

학습 노트/Kotlin (2024)

004. loop와 function

Loop

// for
for (city in cities) {
    println(city)
}

// while
var index = 0
while (index < cities.size) {
    println("indx $index is ${cities[index}")
    inex += 1
}

for문과 while문을 사용한 반복문도 동일하게 존재하며, value binding도 당연히 사용할 수 있다.

//close ended range
0..10

//open ended range
0..<10

for (index in 0..10) {
    println(index)
}
0
1
2
3
4
5
6
7
8
9
10

for문에 자주 사용하는 범위 연산자는 swift의 것과 많이 닮아있는데, 기본적으로 전위를 포함하고, 후위를 닫아주는 형태이다.
open ended range는 최근 추가된 연산자로, 기존의 rangeUntil을 대체한다.

Function

fun main() {

}

지금까지 줄곧 사용하고 있었지만 위 표현식이 kotlin의 함수 표현식이다.

fun sayHello() {
    println("Hello!")
}

다른 함수를 호출할 수 있고

fun sayHello2Someone(name: String) {
    println("Hello $name!")
}

파라미터를 선언해 호출 시 argument를 전달할 수 있다.

fun add(): Int {
    return 20 + 30
}

반환 값에 대한 타입을 지정할 수도 있고

fun addCompact(): Int = 20 + 30

간단한 함수라면 축약형도 지원한다.

fun tempdivide(x: Int, y: Int): Int = x / y

모든 걸 적용 하면 이런 형태...
해석하면 tempdivide 함수는 정수 형태의 x와 y를 인자 받아 둘을 나눠 정수 타입의 몫을 반환하는 기능을 한다.

println(tempdivide(100, 50))
println(tempdivide(y=700, x=300))

아규먼트 전달은 기본적으로 파라미터의 순서에 맞게 전달해야 하지만,
named argument를 지원하기 때문에 두 번째 줄과 같이 명시적으로 전달한다면 순서는 지키지 않아도 된다.

private fun tempFunc() {
    // empty function with empty line!
}

fun tempFunc2(): Int {
    return 0
}

혹여 빈 함수를 만든다면 kotlin에는 pass가 존재하지 않으니 일반적으로 빈 공백이나 주석을 두면 되고,
만약 반환 형태가 주어져 있다면 일단은 뭐든 반환은 시켜야 에러가 발생하지 않는다.
또한 모든 함수는 public 취급을 받으므로, 제한적으로 사용하고자 한다면 private 키워드를 붙여 사용할 수 있다.

'학습 노트 > Kotlin (2024)' 카테고리의 다른 글

005. nullSafety  (0) 2024.05.05
003. 조건문과 array 그리고 list  (0) 2024.05.05
002. 기본 연산자들  (0) 2024.05.04
001. 출력과 기본 자료형  (0) 2024.05.04