반응형

 코틀린은 아주 전망이 좋은 언어인 것 같고 코드가 간결하며 멀티플랫폼도 지원하고 있다는 소식에 공부를 하게되었습니다...! 

 코틀린의 주석은 // 로 한 줄 주석을 사용하고 /* */ 로 여러줄 주석을 사용할 수 있습니다.


1. 함수

 코틀린은 엔트리 함수즉, 처음 시작하는 포인트가 fun main(){} 요런 함수이다.

 코틀린은 리턴값에 상관없이 맨 앞에 fun을 작성하고 그 뒤에 함수이름, 파라미터와 리턴값을 써준다.

 함수 선언은 fun 함수명 (변수명, 변수타입) : 반환값{} 과 같은 형태로 한다. 단, 리턴값이 없을경우 반환값 부분에 Unit을 써주거나 ‘ : 반환값 ‘ 을 생략하고 선언할 수 있다.

 새로운 언어배울 때 국룰인 ‘hello world’ 를 출력해주는 함수를 예시로 들어보면

fun main(){
		helloWorld() // Hello World! 출력
}


fun helloWorld(){
		println("Hello World!")
}

/* 아래의 코드과 같이 작성하여도 정상 동작
fun helloWorld() : Unit{
	println("Hello World!")
}
 */

위에 작성한 코드처럼 리턴값이 없는 함수일 경우 fun helloWolrd(){}나 fun helloWorld() : Unit{} 과 같이 간단하게 선언할 수 있다.

fun main(){
        println(add(4,5)) // 9 출력
} 

fun add(a : Int, b : Int) : Int {
    return a+b
}

위에 작성한 코드는 리턴값이 있는 함수이다. Int형 변수 a, b를 파라미터로 받아 a+b값을 Int로 반환해 주는 함수이다. 위에서 설명을 한 것처럼 fun 함수명 (변수명, 변수타입) : 반환값{} 형태로 함수가 선언된 것을 볼 수 있다.  

그동안 배워왔던 몇가지 언어들과 다른점들이 보이는데 눈에 띄는 것은 파라미터에서 변수명이 변수타입보다 먼저오는 것과 변수타입의 앞글자가 대문자인 것과 리턴타입을 파라미터 다음에 지정하여 주는 것이다. 반환값이 있는 함수 같은 경우에는 반드시 리턴 타입을 지정해주어야 한다. ‘ ) : Int ‘ 부분처럼.


2. val과 var의 차이

val은 value의 약자이고 var은 variable의 약자이다. 간단히 말하자면 val로 선언된 변수는 수정이 불가능하고 var로 선언된 변수는 수정이 가능하다. 

fun hi(){
    val a : Int = 10
    var b : Int = 9
    // code with Joyce에 따르면 이렇게 암기하면 좋을 것 같다고했다.
    // 헷갈린다면 val은 발, 발은 땅에서 뗄 수 없기 때문에 변경이 불가능하다.
    // var는 바지의 바, 바지는 갈아입을 수 있기 때문에 변경이 가능하다.
    // 그냥 value, variable을 생각해서 사용하는 것도 헷갈리지 않는데 좋을 것 같다.

    a = 100 // Val cannot be reassigned 에러 발생(수정 불가)
    b = 100 // b = 100으로 수정

    // 코틀린은 자동으로 타입을 추론해줘서 위에처럼 Int를 적지 않아도
    // 상관이없다. 하지만 val과 var은 구분을 해줘야함
    val c = 100
    var d = 100

    var name = "joyce" // 스트링으로 자동 추론

    // 하지만 위의 예시들과 다르게
    // 바로 값을 할당하지 않을 경우?..
    // var e 이런 형태로는 사용이 불가능하다.
    var e : String //처럼 변수타입은 지정해줘야함
}

코틀린은 자동으로 변수 타입을 추론해줘서 변수타입을 적지 않아도 된다. 아래코드의 c, d 변수선언이 그 예시이다. 하지만 선언과 동시에 값을 할당하지 않을 경우에는 변수타입을 지정해야한다. var e : String이 그러한 경우이다.


3. String Template(템플릿 문자열)

String Template은 ‘문자열에 변수를 포함시킬때 조금 더 직관적이고 알아보기 쉽게 사용하기위한 기능이다.

fun main(){
    
    val name = "Joyce"
    val lastName = "Hong"
		// 일반적으로 문자열 출력
    println("my name is Joyce") // my name is Joyce 출력
		// String Template 사용
    println("my name is $name") // my name is Joyce 출력

    // 변수명을 사용하여 그 값을 불러오고 싶을 땐 $를 변수명에 붙여주면 된다.
    // 주의사항으로는 "my name is $nameI am 24" 와 같은 경우에는
    // $가nameI까지 인식을 해버리기 때문에
    // 띄어쓰기를 사용해주어야 한다. "my name is $name I am 24" 
    // 만약 띄어쓰기를 사용하고 싶지 않다면 변수명을
    // {}대괄호로 묶으면 된다. "my name is ${name}I am 24"
    // 띄어쓰기를 사용하지 않더라더 스트링 템플릿을 사용하면 
    // 대괄호로 변수명을 묶는 습관을 들이는 것이 좋을 것 같다.
    // 대괄호로 묶으면 안의 내용들을 모두 변수명으로 인식 하기 때문에 아래와 같이 사용도 가능하다.
    println("my name is ${name + lastName}I am 24") 
    // my name is JoyceHongI am 24 출력

    // 달러표시(문자)를 쓰고 싶다면 백슬래쉬를 이용해서 이스케이프 문자로 사용하면 된다.
    println("this is 2$") // this is 2$ 출력(뒤에 아무것도 없기 때문)
    // println("this is 2$a") // 오류발생
    println("this is 2\$a") // this is 2$a 출력

스트링 템플릿을 사용할 때의 주의할 점으로는 $뒤에 오는 것을 전부 변수명으로 인식하기 때문에 대괄호를 써서 구분해주는 것이 좋을 것 같다.


위에 작성된 코드 및 설명들은

코틀린 3강으로 끝내기 - 1편 기본 문법

에서 코틀린 강의 영상을 보며 정리한 내용입니다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기