Kotlin 문법 익히기 (infix와 vararg)

박경현·2023년 12월 24일
0

방학을 하면서 미뤄뒀던 공부를 다시 시작하게 되었다
사실 변명만 많이해서 많이 미뤘는데 이번 방학은 3학년 마지막 방학이기에 역량을 극한으로 끌어올려보자

코틀린에서 infix와 func

코틀린의 엔트리포인트는 메인 함수이다 -> 이때 메인은 아무것도 리턴하지 않는다
세미콜론은 선택사항이나 지역변수에서는 주로 사용하지 않았다

// 가장 기본 함수 - 인자가 String, 리턴 값이 없음
fun printMessage(message: String): Unit {
	println(message)
}
// default를 설정할 때는 타입이 명시되어야한다
fun printMessageWithPrefix(message: String, prefix, String = "Info") {
	println("[$prefix] $message")
}
// vararg는 가변인자를 받는다는 뜻이다 -> 여기서는 primitive배열로 바뀌게 되는데 String은?
fun printAll(vararg message: String) {
	for (m in message) println(m)
}

// vararg에 배열을 넣어야한다면 넣는 곳에서 전달 배열 앞에 *를 붙여줘야함!
fun printElement(vararg element: Int) {
	for (item in element) println("$item", )
}

fun main(args: Array<String>) {
	val intArray: IntArray = intArrayOf(1,2,3,4)
    printElement(*intArray)

	infix fun Int.times(str: String) = str.repeat(this)
    println(2 times "Bye ")
    // 결과 -> Bye Bye
    
    var pair = "Ferrari" to "Katrina"
    // (Ferrari, Katrina)
    
    infix fun String.onto(other: String) = Pair(this, other)
    var myPair = "McLaren" onto "Lucas"
    println(myPair)
    // (McLaren, Lucas)
    
    val sophia = Person("Sophia")
    val claudia = Person("Claudia")
    sphia likes claudia
    
    
}
class Person(val name: String) {
	private val likedPeople = mutableListOf<Person>()
    infix fuc likes(other: Person) {likedPeople.add(other)}
}

코드 설명

infix는 객체내에 추가적인 함수를 만들때 사용하는 문법이다
infix에서 신기한 점은 String이나 Int 뿐 아니라 내가 만든 클래스 내부에서 infix를 적용할 수 있다는 점이다!

vararg는 자바처럼 코틀린에서도 가변인자를 지원해주는 방식인데

코틀린의 IntArray, ByteArray, DoubleArray, CharArray 등의 클래스는
( primitive타입명Array 클래스)는 JVM의 int[], byte[], double[], char[] 등의 primitive 타입 배열로 타겟팅된다.

Person부분에 보면 mutableListOf로 만들었는데 listOf로 리스트를 만들면 그냥 읽기만 가능해서
mutableListOf로 만들어줘야 데이터를 추가하고 읽기가 가능하다!

방학간의 목표

  1. Pccp 2월에 3단계 맞기

    이 목표를 위해서 매일 하루 백준 3문제(구현, dfs, dp), 프로그래머스 3문제(레벨2)를 풀면서
    알고리즘 사고를 높이자!

  2. Do it 자바 안드로이드 책에서 만든 어플 코틀린으로 변환해보기

    이건 교수님이 주신 자바어플을 만들어보는 연습을 해야했고 그리고 이걸 변환해보는 연습을 통해
    자바와 코틀린간의 언어 차이를 제대로 알아보자

  3. 코틀린 및 플러터로 어플 출시하기

    실제 어플을 출시해보면서 어플리케이션 생태계를 제대로 파악해보려고 한다

  4. 토익 850점 맞기

    개발자의 필수 역량 중 영어는 필수이기에 이번 기회에 회화영어를 공부해보면서 토익도 도전해보려고 한다.

profile
SW로 문제를 해결하려는 열정만 있는 대학생

0개의 댓글