Kotlin Koans - Introduction

JJAE WON·2022년 2월 24일
0
post-thumbnail

Kotlin Koans 에서 Introduction 부분의 문제를 풀고 공부한 내용을 정리한 글 입니다.

joinToString()

fun joinToString(
    separator: String = ", ",
    prefix: String = "",
    postfix: String = "",
): String

list = arraylistOf("a","b","c")
list.joinToString("") 
list.joinToString(", ","[","]")

/**출력
abc
[a, b, c]
**/

첫번째 인자 : collection 사이의 구분값

두번째 인자 : collection 시작값 , 선언되지 않을 경우 없음

세번째 인자 : collection 마지막값, 선언죄이 않을 경우 없음



함수 Detault arguments

fun read(
    b: ByteArray,
    off: Int = 0,
    len: Int = b.size,
) { /*...*/ }

함수의 매개변수는 기본값을 가질 수 있다.

Java에서 같은 이름의 함수이지만 매개변수가 다를 경우 각각의 함수를 만들어주었어야 했는데 Kotlin에서는 기본값이 있는 매개변수는 값을 넣어주어도 되고 안넣어주어도 된다.

fun foo(name: String, number: Int = 42, toUpperCase: Boolean = false) =
        (if (toUpperCase) name.uppercase() else name) + number

fun useFoo() = listOf(
        foo("a"),
        foo("b", number = 1),
        foo("c", toUpperCase = true),
        foo(name = "d", number = 2, toUpperCase = true)
)


String literals

Kotlin 에서는 2가지 타입의 String literals(변수에 넣지않는 변하지 않는 데이터) 가 존재한다.

1. excaped characters를 포함한 escaped

 strings

val s = "Hello, world!\n

\t\b\n\r\'\",\\ , \$ 와 같은 이스케이프 구문을 포함한 string

2. 삼중따옴표

val text = """
    for (c in "foo")
        print(c)
"""

""" 로 구분되고 이스케이프를 포함하지 않고 줄 바꿈, 기타 문자를 포함할 수 있다.

이때 사용되는 2가지 함수가 있다.

  • trimMargin
fun String.trimMargin(marginPrefix: String = "|"): String

매개변수인 marginPrefix 의 기본값은 | 이다.

val withoutMargin1 = """ABC
                |123
                |456""".trimMargin()
println(withoutMargin1) 
// ABC\n123\n456

val withoutMargin2 = """
    #XYZ
    #foo
    #bar
""".trimMargin("#")
println(withoutMargin2) 
// XYZ\nfoo\nbar

marginPrefix 값을 모든 줄마다 제거하고 첫번째와 마지막 줄을 제거해줍니다.

  • trimIndent
fun String.trimIndent(): String
val withoutIndent =
    """
            ABC
            123
            456
        """.trimIndent()
println(withoutIndent) // ABC\n123\n456

각 줄에서 공백과 비어있는 줄을 다 제거해 예쁘게 만들어줍니다.

추가적으로 삼중따옴표를 이용해서 정규식 처리를 간단하게 할 수 있다.

fun getPattern(): String = """\d{2} $month \d{4}""" //13 month 1992

fun getPattern() = """\d{2}\.\d{2}\.\d{4}"""  // 13.06.1992


Nothing Type

kotiln에는 아무것도 반환하지 않는 타입인 Nothing 이 존재한다.

함수의 return 값을 반환하지만 무슨 타입인지는 모르는 Unit 과 다르게 Nothing 은 아무것도 반환하지 않는다. 주로 예외를 처리할 때 사용된다.

fun fail(message: String): Nothing {
    throw IllegalArgumentException(message)
}

이 함수를 호출했을때 예외가 발생하게 되면 함수가 정상적으로 종료되지 않는다.

이말은 즉, 함수의 반환값이 아무것도 없다. = 반환값이 Nothing 이다.

👍🏻 굉장히 잘 정리되어있는 정리글을 찾았다!! 👍🏻

[Kotlin] 헷갈리는 "Nothing" 확실하게 이해하기(feat. Any, Unit)

profile
안드왕 찐천재가 되고싶다.

0개의 댓글