목록코틀린 (15)
변명은 만개 결과는 한개
Lambdas 코틀린에서는 기본적으로 람다를 제공하고있음. button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { view.setAlpha(0.5f); } }); 위와같은 java 코드가 setOnClickListener 의 구현해야하는 메소드가 한가지(onClick()) 뿐이기에 아래와 같이 3줄로 줄어들 수 있음 button.setOnClickListener { view -> view.alpha = 0.5f } 또 한번 더, onClick() 메소드가 싱글 파라미터(한가지의 파라미터만을 가지는 메소드) 이기에 it 키워드를 사용하여 아래와 같이 생략 가능함 button.setOnCl..
Function Defining functions 리턴값이 없는 경우 fun 함수명(변수): Unit { // Unit 생략 가능 값 처리 } 리턴값이 있는 경우 fun 함수명(변수): 리턴타입 { return 값 } 아래와 같이 한줄로 되어있는 단순한 함수라면 return 의 생략이 가능하며, 유추하기를 통해 리턴타입 또한 생략 할 수 있음 fun getSum(a: Int, b: Int): Int { return a + b } // return 생략 fun getSum(a: Int, b: Int): Int = a + b // 유추하기를 통한 생략 fun getSum(a: Int, b: Int) = a + b Extension Functions 함수를 확장하여 기존에 있던 것처럼 사용할 수 있음. 단, ..
Class 생성자 class 클래스이름 constructor(변수){ } 또한 아래와 같이 다중 생성자를 가질 수 있음 class Sample constructor(val name: String, val arg: Int) { constructor(name: String) : this(name, 0) } class 를 정의함과 동시에 오는 생성자를 primary constructor 라 부르고, 그 이외의 생성자들을 secondary constructor 라 부른다. primary constructor 아래와 같이 constructor 생략 가능하다 class Sample (val name: String, val age: Int) { ... } 자바 생성자와 다르게 변수에 대한 타입을 바로 가질 수 있으며..
비교 메모리의 비교에는 === 사용 val a: Int = 10_000 print(a === a) // 'true' val b: Int? = a val c: Int? = a print(b === c) // 'false' 값의 비교에는 == 사용 val a: Int = 10_000 print(a == a) // 'true' val b: Int? = a val c: Int? = a print(b == c) // 'true' var / val var (mutable) read / write 모두 가능 val (immutable) java 의 final. read 가능하나 write 불가능함 null 자료형 뒤의 ? Nullable! 심지어 safecall 하지 않으면 .length 호출도 안됨 자료형 뒤에 ?..
Kotlin 에서 findViewById 시 // 1 val navView1 = findViewById(R.id.nav_view) as BottomNavigationView // 2 val navView2 = findViewById(R.id.nav_view) // 3 val navView3: BottomNavigationView = findViewById(R.id.nav_view) 위와 같이 세가지 모두 사용 가능함. 단, 첫번째 방법으로 findViewById 시도 시 두번째 방법을 추천함. 사실, apply plugin: 'kotlin-android-extensions' 를 사용하면 findViewById 할 필요도 없음. message.text = "set text" 처럼.
Kotlin 코드와 Decomplie된 Java 코드 Tools > Kotlin > Show Kotlin Bytecode -> Decompile 버튼 클릭시 Kotlin 코드와 그 코드를 Java로 Decompile한 코드를 확인가능 fun main() { println("HelloKotlin!") } import kotlin.Metadata; @Metadata( mv = {1, 1, 18}, bv = {1, 0, 3}, k = 2, d1 = {"\u0000\b\n\u0000\n\u0002\u0010\u0002\n\u0000\u001a\u0006\u0010\u0000\u001a\u00020\u0001¨\u0006\u0002"}, d2 = {"main", "", "HelloKotlin"} ) public ..
특징 변수는 Nullable과 NotNull로 나뉘는데, 변수 선언시 '?'를 붙여 Nullable로 만들 수 있다. 사용 가능한 플랫폼 Kotlin/JVM - 안드로이드 Kotlin/JS - 브라우저 Kotlin/JS - 멀티플랫폼 ( MacOS, iOS, Windows, Linux 등 ) 하지만 Kotlin/JVM 외에는 활성화되어있지않음 장점 자료형에 대한 오류를 미리 잡을 수 있는 정적 언어(Statically typed) 널 포인터로 인한 프로그램의 중단을 예방 데이터 선언 시 널 가능한 형식('?')과 불가능한 형식 지원 자바와 완벽하게 상호운영 가능 > IntelliJ 설치 이후 Helloworld 출력 동작 확인 완료