This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| kotlin [2019/01/03 14:46] – High-Order Functions 시험 ledyx | kotlin [2021/02/07 03:15] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | = Kotlin = | + | ~~REDIRECT>language:kotlin~~ |
| - | + | ||
| - | * 기본적으로 Java를 다뤄봤다는 전제하에 실용적인 측면으로만 기술. | + | |
| - | + | ||
| - | {{tag>Language Scala JVM Object_Oriented_Programming Functional_Programming}} | + | |
| - | + | ||
| - | = 기본 = | + | |
| - | + | ||
| - | <sxh kotlin> | + | |
| - | // data를 붙이면 toString(), equals(), hashCode(), copy() Method 생성 | + | |
| - | // 기본적으로 모든 변수는 null을 허용하지 않기 때문에, C#처럼 " | + | |
| - | // val은 Scala처럼 Immutable, var는 Mutable. | + | |
| - | data class Person(val name: String, val age: Int? = null) | + | |
| - | + | ||
| - | // 함수 내용이 한 줄인 경우 " | + | |
| - | // it은 Scala나 Clojure의 " | + | |
| - | //"?:" | + | |
| - | fun getOldest(persons: | + | |
| - | + | ||
| - | // main 함수를 작성하는데 class가 필요하지 않다. | + | |
| - | fun main(args: Array< | + | |
| - | val person1 = Person(" | + | |
| - | val person2 = Person(" | + | |
| - | val person3 = Person(age = 22, name = " | + | |
| - | + | ||
| - | //list 생성. 모든 Collection은 ...Of로 생성 가능. | + | |
| - | val persons = listOf(person1, | + | |
| - | val oldest = getOoldest(persons) | + | |
| - | + | ||
| - | // 문자열 Template 지원. 식(Expression)이 아닌 경우 {} 생략 가능. | + | |
| - | println(" | + | |
| - | } | + | |
| - | </ | + | |
| - | + | ||
| - | < | + | |
| - | oldest : Person(name=Jake, | + | |
| - | </ | + | |
| - | + | ||
| - | == High-Order Functions 시험 == | + | |
| - | + | ||
| - | https:// | + | |
| - | + | ||
| - | 아래 예제처럼 Kotlin은 함수를 first-class로 취급하므로 Functional Programming의 기본 특성을 만족한다. (함수를 인자로 받고, 함수를 반환할 수 있는 특성) | + | |
| - | + | ||
| - | < | + | |
| - | // Type만을 지정하기 위한 빈 Interface 생성. 상속은 ":" | + | |
| - | interface Event | + | |
| - | data class KeyEvent(val value: String): Event | + | |
| - | fun onKeyDown(f: | + | |
| - | + | ||
| - | fun main(args: Array< | + | |
| - | // onKeyDown { event -> println(event) } 와 동치. | + | |
| - | onKeyDown { println(it) } | + | |
| - | } | + | |
| - | </ | + | |
| - | + | ||
| - | < | + | |
| - | KeyEvent(value=Hello, | + | |
| - | </ | + | |