Kotlin(6)
-
코틀린학습 - #6 오버로딩
연산자 오버로딩과 기타 관례 미리 정해진 이름의 함수를 연결해주는 기법을 코틀린에서는 관례(convention)라고 부른다. 연산자를 오버로딩하는 함수 앞에는 꼭 operator 가 있어야 한다. plus 연산자 구현하기 data class Point(val x: Int, val y: Int) { operator fun plus(other: Point): Point { return Point(x + other.x, y + other.y) } } val p1 = Point(10, 20) val p2 = Point(30, 40) println(p1 + p2) // + 연산자는 plus 함수 호출로 컴파일 된다. //Point(x=40, y=60) 연산자를 확장함수로도 정의 가능 plus 연산자 구현하기 op..
2020.11.17 -
코틀린학습 - #5 타입 시스템
코틀린의 타입 시스템은 코드의 가독성을 향상시키는데 도움이 되는 몇가지 특성을 제공 널이 될수 있는 타입 읽기 전용 컬렉션 널 가능성 널이 인자로 들어올 수 없다면 다음과 같은 함수 정의 가능 fun strLen(s: String) = s.lengthstrLen() 함수는 String 인스턴스여야 하므로 결코 실행시점에 NullPointException이 발생하지 않는다. 이 함수가 nul과 문자열을 인자로 받을 수 있게 하려면 타입 이름 뒤에 물음표(?)를 명시해야 한다. 모든 타입은 기본적으로 널이 될수 없는 타입이다. Type? = Type 또는 null if 검사를 통해 null 값 다루기 fun strLenSafe(s: String?) : Int = if (s != null) s.length e..
2020.11.17 -
코틀린학습 - #4 람다
람다 식과 멤버 참조 lambda expression - 기본적으로 다름 함수에 넘길 수 있는 작은 코드 조각을 뜻한다. 무명 내부 클래스로 선언해서 사용하던 방식을 함수형 프로그래밍으로 전환하여 함수를 값처럼 다르는 접근 방법을 택하는것 무명 내부 클래스로 리스너 구현하기 button.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { /* TODO */ } }); 람다로 리스너 쿠현하기 button.setOnClickListener { /* TODO */ } 람다와 컬렉션 람다를 사용해 컬렉션 검색하기 (가장 나이 많은 사람 찾기) val people = listOf(Person("Allice", 2..
2020.11.16 -
코틀린학습 - #3 클래스
클래스 계층 정의 인터페이스에 프로퍼티 선언이 들어갈 수 있다. 번잡스러움을 피하기 위해 일부 표준 메소드를 생성해준다. sealed 는 클래스 상속을 제한한다. 클래스 이름 뒤에 콜론을 붙이고 인터페이스와 클래스 이름을 적는 것으로 클래스 확장과 인터페이스를 모두 처리한다. override 변경자는 상위 클래스나 상위 인터페이스에 있는 프로퍼티나 메소드를 오버라이드한다는 표시이다. 상위 타입의 이름을 꺽쇠 괄호 사이에 넣어서 "super"를 지정하면 어떤 상위 타입의 맴버 메소드를 호출할지 지정할 수 있다. 게터와 세터에서 뒷받침하는 필드에 접근 field 라는 특별한 식별자를 통해 뒷받침하는 필드에 접근할 수 있다. open, final, abstract 변경자: 기본적으로 final 코틀린의 클래스..
2020.11.11 -
코틀린학습 - #2 함수
코틀린에서 컬렉션 만들기 .javaClass는 자바의 getClass()에 해당하는 코틀린 코드 코틀린은 자체 컬렉션을 제공하지 않고 자바 컬렉션을 활용한다. last(): 리스트의 마지막 원소 조회, max() 최댓값 val strings = listOf("first", "second", "fourteenth") println(strings.last()) val numbers = setOf(1, 14, 2) println(numbers.max()) 이름 붙인 인자 코틀린으로 작성한 함수를 호출할 때는 함수에 전달하는 인자 중 일부 또는 전부의 이름을 명시할 수 있다. 자바로 작성한 코를 호출할 때는 이름 붙인 인자를 사용 할 수 없다. joinToString(collection, separator = ..
2020.11.09