개발(Android)/kotlin syntax

[Kotlin syntax] Type Inference, Functions, Arithmetic Operators

shinyelee 2022. 3. 31. 23:38

[코틀린 문법] 타입추론과 함수

Type Inference(타입 추론)

    // 코틀린은 똑똑하기 때문에 알아서 자료형(변수 타입)을 때려맞춤
    // -> 정수는 Int, 실수는 Double이 기본값
    // -> 자료형을 코드에 명시하지 않아도 됨
    // (Byte, Short 등을 사용하려면 자료형을 명시하면 됨)

    var apple = 1234
    // var apple: Int = 1234
    // 기본적으로 정수는 Int형으로 추론

    var banana = 1234L
    // var apple: Long = 1234L
    // 정수에 L 붙어있으면 Long형으로 추론

    var cherry = 12.45
    // var apple: Double = 12.45
    // 기본적으로 실수는 Double형으로 추론

    var dragonFruit = 12.45f
    // var apple: Float = 12.45f
    // 실수에 f 붙어있으면 Float형으로 추론

    var fig = 0xABCD
    var grape = 0b0101010
    // 16진수, 2진수는 Int형으로 추론

    var kiwi = true
    var lemon = 'l'
    // Boolean형, Char형도 알아서 추론



    // 비슷하게 생겼지만 문자와 숫자는 다르다

    // 문자 -> 일이삼사 + 일
    var test1 = "1234"
    println(test1::class.java.simpleName)
    println(test1 + 1)
//    12341

    // 숫자 -> 천이백삼십사 + 일
    var test2 = 1234
    println(test2::class.java.simpleName)
    println(test2 + 1)
//    1235



    // 잘못된 타입 지정 -> 에러 발생
    // 틀리게 쓰느니 안 쓰는 게 낫다
    var test5 = "5678"
//    val test5 : Int = "5678"
//    println(test5)
//    Kotlin: Type mismatch: inferred type is String but Int was expected

    var test6 = 5678
//    val test6 : String = 5678
//    println(test6)
//    Kotlin: Type mismatch: inferred type is String but Int was expected

Function(함수)

// Functions(함수) //

// 특정한 동작이나 결과값 연산에 사용
// 함수 생성시 함수명 앞에 fun을 붙임

fun main() {

    // 문자열 출력하는 함수
    printJack()
//    Jack

    // 매개변수 있는 함수
    printCard("ive", 11)
//    ive = 11

    // 단일 표현식 함수
    println(plus(4, 5, 6))

}

// Single-Expression function(단일 표현식 함수)
fun plus(a: Int, b: Int, c: Int) = a + b + c

// () 안에 뭐 있음 -> 매개변수 있는 함수
// fun 함수명(매개변수명 : 자료형) { 코드 본문 }
fun printCard(cardName: String, cardValue: Int) {
    println("$cardName = $cardValue")
}

// () 비어있음 -> 매개변수 없는 함수
// fun 함수명() { 코드 본문 }
fun printJack() {
    println("Jack")
}
fun main() {

    testFun()
    abc()
    abc2()
    // 출력 방법 (1)
//    println(sum(30, 50))
    // 출력 방법 (2)
    val sumValue = sum(30, 60)
    println(sumValue)
    cuckoo(50)

    // 출력 안 하는 함수
    getCardString("invu", 9)

    // Bts 클래스의 인스턴스를 생성한 뒤
    val bts = Bts()
    // .함수명() 붙여서 멤버 함수 호출
    bts.suga()
//    AgustD

}



fun cuckoo(time : Int) {
    println("$time 분 후에 취사가 완료됩니다.")
}

fun sum(num1 : Int, num2 : Int) : Int {
//    println(num1 + num2)
    val result = num1 + num2
    return result
}

fun abc2() {
    val a = 20
    val b = 40
    val c = a + b
    println(c)
}

fun abc() {
    val a = 10
    val b = 20
    val c = a + b
    println(c)
}

fun testFun() {
    println("a")
    println("b")
    println("c")
    println("d")
}

/ 문자열 객체로 반환
//fun getCardString(cardName: String, cardValue: Int): String {
//    return("$cardName = $cardValue")
//}

// 짧은 ver.
//fun getCardString(cardName: String, cardValue: Int): String = "$cardName = $cardValue"

// 더 짧은 ver.
fun getCardString(cardName: String, cardValue: Int) = "$cardName = $cardValue"

// 위 셋은 모두 같음



//fun xORy(x: Int, y: Int): Int {
//    return if (x > y) x else y
//}
// 중괄호 내 본문(식)이 한 줄 -> {} 생략
// 반환형 Int 타입으로 추론 -> : Int 생략
// 본문 막줄은 반환형으로 추론 -> return 생략

fun xORy(x: Int, y: Int) = if (x > y) x else y
// 이렇게 짧아짐



// 클래스 내 함수(멤버 함수)
class Bts {
    fun suga(): Unit = println("AgustD")
}

Arithmetic Operator(산술 연산자)

// Arithmetic Operator(산술 연산자) //

fun main() {
    sumTwo(2, 5)
    sumThree(2, 4, 6)
    minus(30, 20)
    division(10, 3)
    remainder(10, 3)
}

fun sumTwo(num1 : Int, num2 : Int) {
    println(num1 + num2)
}
//    7

fun sumThree(num1 : Int, num2 : Int, num3 : Int) {
    println(num1 + num2 + num3)
}
//    12

fun minus(num1 : Int, num2 : Int) {
    println(num1 - num2)
}
//    10

fun division(num1 : Int, num2 : Int) {
    println(num1 / num2) // 몫
}
//    3

fun remainder(num1 : Int, num2 : Int) {
    println(num1 % num2) // 나머지
}
//    1

참고

 

[입문편] 안드로이드를 위한 코틀린(Kotlin) 문법 - 인프런 | 강의

코틀린 문법 기초 강의입니다. 안드로이드 앱을 코틀린 언어로 개발하고 싶으신 분들을 위한 강의이고, 기초부터 튼튼하게 코틀린 문법을 재미있게 공부할 수 있습니다., - 강의 소개 | 인프런...

www.inflearn.com

반응형