Kotlin Koans 에서 Introduction 부분의 문제를 풀고 공부한 내용을 정리한 글 입니다.
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 마지막값, 선언죄이 않을 경우 없음
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)
)
Kotlin 에서는 2가지 타입의 String literals(변수에 넣지않는 변하지 않는 데이터) 가 존재한다.
strings
val s = "Hello, world!\n
\t
, \b
, \n
, \r
, \'
, \"
,\\
, \$
와 같은 이스케이프 구문을 포함한 string
val text = """
for (c in "foo")
print(c)
"""
"""
로 구분되고 이스케이프를 포함하지 않고 줄 바꿈, 기타 문자를 포함할 수 있다.
이때 사용되는 2가지 함수가 있다.
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 값을 모든 줄마다 제거하고 첫번째와 마지막 줄을 제거해줍니다.
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
kotiln에는 아무것도 반환하지 않는 타입인 Nothing
이 존재한다.
함수의 return 값을 반환하지만 무슨 타입인지는 모르는 Unit
과 다르게 Nothing
은 아무것도 반환하지 않는다. 주로 예외를 처리할 때 사용된다.
fun fail(message: String): Nothing {
throw IllegalArgumentException(message)
}
이 함수를 호출했을때 예외가 발생하게 되면 함수가 정상적으로 종료되지 않는다.
이말은 즉, 함수의 반환값이 아무것도 없다. = 반환값이 Nothing
이다.
👍🏻 굉장히 잘 정리되어있는 정리글을 찾았다!! 👍🏻