(1) 문자열 나누기 println("12.345-6.A").split("\\\\.|-".toRegex()) // 정규식을 명시적으로 만든다. println("12.345-6.A").split(".", "-") // 여러 구분 문자열을 지정해도 동일하다. // [12, 345, 6, A] Kotlin에서는 Java의 split을 대신하여 여러가지 파라미터를 받는 split 확장 함수를 제공한다. 정규식을 파라미터로 받는 함수는 String이 아닌 Regex 타입의 값을 받으므로, 어느 것으로 문자열을 분리하는 지 쉽게 알 수 있다. (2) 정규식과 3중 따옴표로 묶은 문자열 fun parsePath(path: String) { val directory = path.substringBeforeLast("/..
가변 길이 인자, 중위 함수 호출, 라이브러리 지원 [Kotlin 언어의 특성] varang 키워드를 사용하면 호출 시 인자 개수가 달라질 수 있는 함수를 정의할 수 있다. 중위 함수 호출 구문을 사용하면 인자가 하나뿐인 메서드를 간편하게 호출할 수 있다. 구조 분해 선언을 사용하면 복합적인 값을 분해해서 여러 변수에 나눠 담을 수 있다. (1) Java 컬렉션 API 확장 val strings: List = listOf("first", "second", "fourteenth") strings.last() // fourteeth val numbers: Collection = setOf(1, 14, 2) numbers.max() // 14 fun List.last(): T { /* 마지막 원소를 반환하는 ..
메서드를 다른 클래스에 추가 package strings fun string.lastChar(): Char = this.get(this.length - 1) fun string.lastChar(): Char = get(length - 1) println("Kotlin".lastChar()) // n -> Kotlin이 수신 객체, 타입은 String 확장 함수는 어떤 클래스의 멤버 메서드인 것처럼 호출할 수 있지만 그 클래스의 밖에 선언된 함수이다. 확장 함수를 만들기 위해선 추가하려는 함수 이름 앞에 그 함수가 확장할 클래스의 이름을 덧붙이면 된다. 클래스 이름을 수신 객체 타입(String)이라 하며, 호출되는 대상이 되는 값을 수신 객체(this) 라고 한다. 호출할 때는 다른 일반 클래스 멤버를 ..
val list = listOf(1, 2, 3) println(list) // [1, 2, 3] Java의 컬렉션에는 Default로 toString( )이 구현되어 있다. fun joinToString( collection: Collection, separator: String, prefix: String, postfix: String): String { val result = stringBuilder(prefix) for((index, element) in collection.withIndex()) { if(index > 0) result.append(seperator) // 첫 원소 앞에는 구분자를 붙히면 안됨. result.append(element) } result.append(postfix) ..
val set = hashSetOf(1, 7, 33) // 숫자로 이루어진 집합 val list = arrayListOf(1, 7, 33) // 리스트 val map = hashMapOf(1 to "one", 7 to "seven", 11 to "eleven") // 맵 println(set.javaClass) // Class java.util.HashSet println(list.javaClass) // Class java.util.ArrayList println(map.javaClass) // Class java.util.HashMap Kotlin은 자신만의 컬렉션 기능을 제공하지 않는다. ( = 자바와 상호 간 호출할 때, 서로 변환 할 필요가 없다. ) Kotlin의 컬렉션은 Java보다 더 많은..