본문 바로가기
백엔드/기타

[Kotlin] 코틀린 기초문법 -1-

by 취업하고싶어요 2021. 8. 5.

1. 변수의 선언

val = 재할당 불가능

var = 재할당 가능한 변수

 

1-1 변수의 타입

변수의 이름 뒤에 타입을 선언 해준다.

val cost : Int = 10;

 

1-2 null 

명시적으로 null 선언이 불가능하다.

val cost : String = null; 

해당 코드는 불가능 하다.

null 을 명시적으로 선언하기 위해서는 타입의 뒤에는 " ? " 키워드를 사용한다.

val cost : String? = null;

 

2 반복문과 분기처리

일반적인 프로그래밍과 같다.

반복문 : repeat 

분기문 : if  또는 " when "  을 사용한다.

 

2-1 when 을 사용하여 깔끔하게 작성하기

val answerString : String = when {
    count
== 42 -> "I have the answer."
    count
> 35 -> "The answer is close."
   
else -> "The answer eludes me."
}

println
(answerString)

위에서 : String 의 타입은 추론할 수 있기에 생략할 수 있다. ( when 의 리턴 값이 "String " 밖에 없으므로 ) 

 

2. 함수의 선언

2-1 함수 내부의 변수는 최대한 생략하라.

fun generateAnswerString(countThreshold: Int): String {
    val answerString = if (count > countThreshold) {
        "I have the answer."
    } else {
        "The answer eludes me."
    }

    return answerString
}

에서 함수 내부의 변수를 최대한 생략하여 작성하자.

fun generateAnswerString(countThreshold: Int): String {
    return if (count > countThreshold) {
        "I have the answer."
    } else {
        "The answer eludes me."
    }
}

위와 같이 심플하게 작성하자.

 

2-2 익명함수

말 그대로 이름이 없는 함수. (자바 스크립트의 내용과 비슷하다)

val stringFunc : ( String) -> Int = {

  // 익명함수 실행 로직 

}

: 이후가 익명함수의 매개변수와 , 반환타입, 함수 실행 부분

당연하게도 즉시 실행되지 않는다. 호출해서 사용해야 한다. 이 부분은 자바스크립트의 내용과 상이하다.

 

2-3 고차함수

자바스크립트의 함수는 다른 함수의 인자로 사용할 수 있다는 메커니즘과 동일하다.

코틀린에서는 아래의 코드로 표시한다.

 

선언

fun stringMapper(str: String, mapper: (String) -> Int): Int {
    // Invoke function
    return mapper(str)
}

 

호출

stringMapper("ABC", { input -> input.length })

간단하다.

 

3. 클래스

클래스 역시 다른 " java " , " JavaScript " 와 동일하다.

 

3-1 클래스 선언

class local {

    val wheels = listof<Wheel>()

}

 

3-2 클래스 함수 및 캡슐화

자바의 부분과 동일하다.

class Car(val wheels: List<Wheel>) {

    private val doorLock: DoorLock = ...

    fun unlockDoor(key: Key): Boolean {
        // Return true if key is valid for door lock, false otherwise
    }
}

get set 과 비슷한 메커니즘으로 사용한다.

private 멤버 변수를 선언하여, 해당 값을 조작할 수 있는 건 오직 unlockDoor 뿐이다.

 

 

 

'백엔드 > 기타' 카테고리의 다른 글

[Apache Kafka] 카프카의 기본 개념  (0) 2021.08.04
MVC vs Web Flux  (0) 2021.08.04
[Apache KafKa] 자주 사용하는 커맨드 모음  (0) 2021.08.02
[apache kafka] 설치하기  (0) 2021.07.28