가변 인자 함수의 정의함수의 매개변수 타입 앞에 vararg 키워드 사용사용fun args(args: Array) { val argumentsList = listOf("args: ", *args) println(argumentsList) } fun main() { args(arrayOf("1", "2", "3")) } //[args: , 1, 2, 3]*args 는 배열의 각 원소를 개별 인자로 함수에 전달함중위 호출(Infix Call)to 함수는 중위 호출 방식ㅇㅁ함수 호출 시 수신 객체와 유일한 메서드 인자 사이에 메서드 이름을 넣어 호출하는 방식1 to "one" == 1.to("one") 와 동일함to 함수to 함수는 Pair 의 인스턴스를 반환함val (number, name) = 1 to "..
코틀린에서의 문자열자바의 문자열과 동일하다자바의 문자열에 API 추가적인 확장 함수 제공그냥 좀더 편하게 쓸 수 있다곤하는데 체감은 안됨문자열 나누기String.split 은 실제 정규식을 씀.split(”.”) 은 마침표 . 를 정규식의 모든 모든 문자를 나타내는 와일드 카드로 해석함fun main() { val split = "12.345-6".split(".", "-") println("split = ${split}"); } split = [12, 345, 6]정규식의 사용toRegex 확장 함수를 통해 문자열을 정규식으로 변환한다.fun main() { val toRegex = "[.\\-]".toRegex() val split = "12.345-6.A".split(toRegex) println(..
코틀린에서의 예외 처리 특징체크 예외 와 언체크 예외 구분이 없다고 함모든 예외가 언체크 예외로 처리됨..예외를 명시적으로 선언하거나 잡을 필요가 없다고 한다.예외 처리의 방식try 블록에서 예외가 발생할 수 있는 코드를 작성하고, catch 블록에서 예외를 잡아서 처리한다.finally 블록에서 정리 코드 수행요 부분은 자바랑 동일하다.그런데 왜 코틀린에서 언체크 예외의 구분이 없을 수 있는 것일까?결론은 단순했다.개발자가 더 명확하고 간결한 코드를 작성하도록 돕는 것이 철학이다일단 체크 예외의 문제점이 존재한다.1 .만약 함수가 새로운 예외를 던지는 경우해당 함수를 호출하는 모든 메서드가 예외를 처리해야하는 막대한 짐을 등에 얹게 된다.과도한 예외 처리 케이스개발자들이 예외를 try-catch 로 적..
컬렉션 사용fun main() { hashSetOf(1, 7, 53).forEach { println(fizzBuzz(it)) } //public fun hashSetOf(vararg elements: T): HashSet = elements.toCollection(HashSet(mapCapacity(elements.size))) //@SinceKotlin("1.1") public actual typealias HashSet = java.util.HashSet arrayListOf("10", "11", "1001").forEach { println(it.toInt()) } //public fun arrayListOf(vararg elements: T): ArrayList = // if (elements...
디폴트 파라미터 사용joinToString 함수에서 디폴트 값을 가지는 파라미터 선언이 가능함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(separator) result.append(element) } result.append(postfix) return result.toString() }이런식으로 arrayListOf(1, 2, ..
확장 함수 정의 방법String 클래스에 lastChar 라는 확장 함수를 추가하려면?package strings fun String.lastChar(): Char = this.get(this.length - 1)this수신 객체를 의미합니다String 클래스의 인스턴스에 대해 호출가능fun main() { println("Kotlin".lastChar()) } //n"Kotlin" 이 수신 객체가 되며lastChar 확장함수는String 의 일부처럼 호출이 가능하다.특징캡슐화확장함수는 캡슐화를 깨지 않는다private 와 protected 는 접근할 수 없다.호환성면자바나 코틀린 등의 언어와 관계없이 JVM 언어로 작성된 클래스에 적용이 가능하다.유연성기존 클래스의 코드 변경 없이 새로운 메서드를 추가..