soft IT life

2023.09.11 월 - Atomic Kotlin 본문

카테고리 없음

2023.09.11 월 - Atomic Kotlin

softPattern 2023. 9. 12. 08:37

함수

  • 파라미터 + 변환타입 => '함수 시그니처'
fun multiplyByTwo(x: Int): Int {  // [1]
  println("Inside multiplyByTwo") // [2]
  return x * 2
}

fun main() {
  val r = multiplyByTwo(5)        // [3]
  println(r)
}
  1. 두번째 함수처럼 의미있는 결과를 제공하지 않는 함수의 반환 타입은 Unit이다. Unit은 생략이 가능
  2. 함수의 본문이 하나의 식인 경우 { } 없이 반환타입 뒤에 = 를 넣어서 짧게 작성 가능
    • fun aaa(a: String, b: Int) : Int = a+b -> 식이 본문인 함수
    • fun aaa(a: String, b: Int) : Int = { ~~ } -> 블록이 본문인 함수

if 식

  • 코드가 한줄이면 {} 생략가능
  • ture -> 코드 실행 / false -> 실행 안함
  • if, else if, else 자유롭게 사용가능(아래처럼 else 꼭 사용하지 않아도 됨)
fun main() {
  if (1 > 0)
    println("It's true!")
  if (10 < 11) {
    println("10 < 11")
    println("ten is less than eleven")
  }
}
  • if, else 문을 한줄로도 작성이 가능
fun main() {
  val num = 10
  val result = if (num > 100) 4 else 42
  println(result)
}

 

루프&범위

  • while: (~)가 true인 경우 { } 반복 수행
  • for: 주어진 순열에 속한 각 값에 대해 { } 수행
fun main() {
  for (i in 1..3) {
    println("Hey $i!")
  }
}
  • 'in' 키워드는 값을 하나하나 가져와 사용한다. 
  • 범위를 나타내는 방법에는 두 가지가 있다.
    • .. : 1..10 -> 1,2,3,4,5,6,7,8,9,10
    • until : 1 until 10 -> 1,2,3,4,5,6,7,8,9
    • step을 사용하여 점프 간격을 지정할 수 있다.
    • 이외의 방법..
fun showRange(r: IntProgression) {
  for (i in r) {
    print("$i ")
  }
  print("    // $r")
  println()
}

fun main() {
  showRange(1..5)
  showRange(0 until 5)
  showRange(5 downTo 1)          // [1]
  showRange(0..9 step 2)         // [2]
  showRange(0 until 10 step 3)   // [3]
  showRange(9 downTo 2 step 3)
}
/* Output:
1 2 3 4 5     // 1..5
0 1 2 3 4     // 0..4
5 4 3 2 1     // 5 downTo 1 step 1
0 2 4 6 8     // 0..8 step 2
0 3 6 9     // 0..9 step 3
9 6 3     // 9 downTo 3 step 3
*/
  • 값을 차례대로 반복하는 것을 이터레이션이라고 함. iteration
    • 알파벳과 같은 string도 가능.
    • but, 하나하나 값이 구분되는 것에 대해서만 가능.