목록Kotlin (5)
NeuroWhAI의 잡블로그
package com.neurowhai class Foo { private fun privateObj() = object { val x = 42 } fun publicObj() = object { val x = 42 } fun test() { println(privateObj().x) //println(publicObj().x) // ERROR! } } // 객체 선언 (싱글톤) object Neurowhai { fun sayHi() = println("Hi") val name = "NeuroWhAI" } interface Factory { fun create(): T } // 동반자(?) 객체 class MyClass { var a = 0 companion object Abc/*이름 생략 가능*/ : ..
package com.neurowhai data class Book(val id: Int, val name: String, var info: String = "NOPE") { // 오직 기본 생성자에 선언된 프로퍼티만 데이터로 취급하므로 // 그 외의 멤버는 toString, copy, hashCode등의 // 자동으로 생성된 메소드에서 다루지 않음. val fullName get() = "$id - $name" } class Outer { class Inner { fun foo() = 42 } } class Outer2 { var value: Int = 42 inner class Inner { // inner 키워드로 수식된 내부 클래스는 // 외부 클래스의 멤버에 접근 가능 fun sum(n: Int..
package com.neurowhai class Human { val name: String var age: Int = 1 get() = field set(value) { if (value != 1) { println("1살인데요.") } else { field = value } } val job get() = "구닌" var truth = "뉴로와이는 천재다." private set lateinit var info: String init { name = "NeuroWhAI" } fun setup() { info = "전역을 원한다." } } fun main(args: Array) { val me = Human() println("I am ${me.name}!") me.age = 42 println("..
// 추상 클래스 abstract class ZeroBase { abstract fun hello() // Body 없음. } // 상속 가능 클래스 open class Base(val x: Int) : ZeroBase() { override fun hello() { // 오버라이드시 override 키워드 필수. println("Hello!") } // abstract class, interface의 요소가 아니라면 // 오버라이드가 가능하기 위해선 open 키워드가 필요. open fun test() { println("Base") } } class Derived : Base { // super(...)로 상위 클래스의 생성자 호출 가능. constructor() : super(42) construc..
코틀린 강좌를 조금씩 보고 있습니다.앱 개발을 하고 싶기에...다만 사정상 안드로이드 에뮬레이터를 돌리기가 힘들어서 진짜 앱 개발 공부는 힘들고언어만 좀 배워두려고 합니다.아래는 끄적여본 첫 코틀린 코드 ㅎㅎ.. package com.neurowhai fun sum(a: Int, b: Int) = a + b fun getStringLengthIfCan(obj: Any): Int? { return if (obj is String) { obj.length } else { null } } fun stringWhatever(obj: Any): String = when (obj) { 1 -> "One" "What" -> "??" is Int -> "is Int" else -> "wtf?" } fun main(ar..