본문 바로가기

kotlin14

Kotlin 자세히 알아보기 -Higer-Order Function 1. Higer-Order Functions 함수를 파라메터로 전달하거나, 함수를 리턴 가능 lamda를 통해 축약 형태로 제공 - 파라메터 정의 (3가지) 1) 파라메터 없는 경우 fun print(body: () -> String) { println(body()) } @Test fun test() { print({"test"}) } 아래 함수는 위와 같다. fun print() { println(body()) } @Test fun test() { print() } fun body() = "return message" 2) 파라메터 1개인 경우 fun print(body: (String) -> String) { println(body("print message")) } @Test fun test() {.. 2019. 8. 18.
Kotlin 자세히 알아보기 - class 안에 class 정의하기, Anonymous 1. Nested class내부에 그냥 class 를 정의하면 static으로 처리한다.java에서는 기본값이 inner class 이지만, kotlin은 기본값이 nested 즉 static class 이다.class Outer { class Nested { private val bar: Int = 1 fun foo() = bar }}/* 호출 */val demo = Outer.Nested().foo() // == 2 2. Inner classclass Outer { private val bar: Int = 1 inner class Inner { fun foo() = bar }}/* 호출 */val demo = Outer().Inner().foo(.. 2019. 8. 15.
Kotlin 자세히 알아보기 - apply, with, let, also, run 먼저! 위에 5가지 사항을 범위 지정 함수 라고 한다. 일단, 크게 3가지로 나눠서 보면 된다.  with  ,   apply also  ,  let run (apply, also 는 거의 비슷, let과 run도 거의 비슷하니 서로 비교하면 이해하기 쉽다)1. with객체를 만들고 반환. 그 이후에 그 객체의 중복 사용이 있는 경우- beforeClass Person { var name: String? = null var age: Int? = null}val person: Person = Person()print(person.name)print(person.age) - afterval person: Person = Person()with(person) { print(name) .. 2019. 8. 15.
Kotlin 자세히 알아보기 - data class, singleton 1. Data Class- java변수에 따른 Getter,Setter, 그리고 부가적인 toString(), hashCode(), equals() 함수들도 작성해야 한다. public final class UserInfo { private String name; private int age; public UserInfo(String name, int age) { this.name = name; this.age = age; } /* Getter, Setter */ public String toString() { return "UserInfo(name =" + this.name + ", age=" + this.age.. 2019. 8. 15.
Kotlin 자세히 알아보기 - companion object, sealed classes 1. companion object class 내에 정의할 수 있음 java에서처럼 Class.TYPE 형태로 직접 접근 가능 static은 아님 companion 변수는 private static final 이다. 따라서 외부 접근이 가능하도록 public final get*() 메서드가 생성된다. (아래 이미지 참조) class Sample { val name: String = "Name" companion object { val type: Int = 0 fun isTypeZero(): Boolean { return type == 0 } } } 2. companion object 접근하기 - kotlin vs java kotlin java // 변수 접근 Sample.type // function 접.. 2019. 8. 11.
Kotlin 자세히 알아보기 - constructor 1. constructor - primary 생성자 class UserInfo constructor(val name: String, val age: Int, val birthday: String) primary 생성자의 constructor 는 생략 가능 val/ var 로 전역 변수 선언 가능 - secondary 생성자 class UserInfo { constructor(name: String, age: Int) } val/ var 로 전역 변수 선언 할 수 없다 따라서 아래와 같이 코드를 작성해야 한다. class UserInfo { var name: String = "" var age: Int = 0 constructor(name: String, age: Int) { this.name = name.. 2019. 8. 11.