2015년 10월 1일
릴리스가 접근하면서 짧은 마일스톤으로 전환됩니다. M14를 소개합니다. 이 릴리스에는 다음과 같은 변경 사항이 포함되어 있습니다:
- 파일 클래스에 대한 주석 지원
- 표준 라이브러리를 위한 새로운 Java API
- 연산자를 위한 operator 수정자
- 백업 필드는 이제 합성 필드 변수를 통해 액세스됩니다
언어
언어 변경 사항을 마무리하고 있으므로 M14에서는 실제로 크게 변화한 것은 없습니다.
참고: 이전에 폐기된 기능과 함수를 삭제하므로 M14를 설치하기 전에 코드 정리를 실행했는지 확인하십시오.
백킹 필드
이전의 $propertyName 구문은 폐기되었습니다. getter/setter 내에서 백업 필드에 액세스하려면 field 합성 변수를 사용하십시오:
var prop: Int = 1
get() {
notifyRead(field)
return field
}
set(v) {
notifyWrite(field, v)
field = v
}
동일한 범위 내의 다른 속성의 이름이 field로 지정된 경우 "this."로 사용법을 지정해야 합니다.
백킹 필드가 있는 var 프로퍼티와 사용자 지정 세터는 선언시 초기화되어야 합니다(생성자에서 초기화하지 않음). 이러한 초기화기는 세터를 우회하여 백킹 필드에 직접 작성되기 때문입니다.
(아마도 드문 경우) 이 모델만으로는 충분하지 않을 경우 백킹 프로퍼티를 도입하거나 프로퍼티 대리자를 사용하는 것을 고려해보십시오.
연산자
이전에 발표한 대로, Kotlin M14는 연산자 표기법(예: 더하기, 반복자 등)을 통해 호출되는 함수가 operator 수정자로 표시되기를 기대합니다. 참고: Any, Iterable 또는 Comparable을 확장할 때는 operator 수정자가 자동으로 상속되므로 걱정할 필요가 없습니다. 연산자 형식으로 Java 메서드를 사용해야 하는 경우 확장 함수를 operator로 표시하십시오:
operator fun JavaClass.plus(other: JavaClass): JavaClass = this.plus(other)
프로젝트에서 사용되는 모든 연산자에 자동으로 수정자를 추가하려면 코드 정리를 사용하십시오.
참고: Infix 함수는 가까운 미래에 동일한 체계로 마이그레이션될 것입니다.
컴파일 타임 상수
M14부터는 Kotlin 상수를 애노테이션에서 사용하고 Java에서 필드로 볼 수 있도록 const로 접두사를 붙여야 합니다:
const val MAX = 239
코드 정리는 누락된 const 수정자를 자동으로 추가할 것입니다.
파일 클래스에 주석 추가
M13부터 각 소스 파일의 최상위 함수 및 프로퍼티는 기본적으로 별도의 클래스 파일에 넣어집니다(세부 정보는 여기에서 확인). 이제 이러한 클래스에 주석을 적용하여 파일 주석을 만들 수 있습니다:
// FILE: foo.kt
@file:MyClassAnnotation
package bar
fun baz() {}
다음과 같이 컴파일될 것입니다:
// Pseudo-Java
@MyClassAnnotation
public final class FooKt {
public static void baz() {...}
}
이전 "패키지 패사드"를 마이그레이션
새로운 클래스 파일 레이아웃으로 전환했으므로 이제 이전 것을 폐기할 시간입니다. M14에서 이전 패키지 패사드 클래스(예: FooPackage)는 폐기되었으며, IDE는 코드 정리를 통해 Java 코드를 새로운 체계로 마이그레이션하는 데 도움이 됩니다.
참고: 패키지 패사드는 곧 삭제될 예정이므로 코드를 마이그레이션해야 합니다.
표준 라이브러리(kotlin.KotlinPackage 클래스)도 새로운 체계로 마이그레이션됩니다: 아래에서 확인하세요.
기타 언어 변경 사항
- 최상위에서의 private는 이제 파일에 대해 private입니다.
- internal은 컴파일러에서 확인됩니다(IDE뿐만 아니라).
- 인터페이스 내의 private는 이제 진정한 private입니다.
- 데이터 클래스에서의 equals는 배열을 그들의 .equals() 메서드를 호출하여 비교합니다(이는 식별성에 따라 작동합니다).
- lateinit val은 금지됩니다.
- 데이터 클래스에 대한 상속 및 다른 자유도의 많은 경우가 금지됩니다(이 블로그 게시물 참조).
- 인터페이스에서는 protected 및 internal 멤버가 금지됩니다.
- _, __, ___는 식별자로 사용할 수 없습니다. 즉, _foo를 사용할 수 있지만 _만 사용할 수 없습니다(미래의 사용을 위해 예약됨).
- identityEquals() 함수는 ===로 대체되어 사용되며, 이 함수는 폐기될 예정입니다.
표준 라이브러리 변경 사항
Java 관점에서 Kotlin의 표준 라이브러리는 이제 각각의 데이터 유형 및/또는 작업에 전용된 유틸리티 클래스로 구성됩니다. 예를 들어:
- ArraysKt — 배열에 대한 작업, 배열에 대한 확장 기능, 배열 팩토리 메서드
- CharsKt — Char 및 Char.Companion에 대한 확장 기능(대부분 숨겨져야 함)
- CollectionsKt — 반복 가능한 항목, 컬렉션 및 목록에 대한 작업, 목록 팩토리 메서드에 대한 작업
- ComparisonsKt — 비교자에 대한 작업, 비교자 팩토리 메서드, 비교 수행을 위한 함수
더 많은 내용은 API 문서를 확인하세요.
IDE 변경 사항
일반적으로 IDE는 코드 정리를 통해 M13에서 M14로 원활하게 마이그레이션할 수 있도록 도와줍니다. 또한 M14에서 몇 가지 편리한 새로운 기능이 있습니다:
- 위에서 언급한 바와 같이 경우에 따라서는 private 백업 프로퍼티가 필요합니다. 의도 작업을 통해 쉽게 추가할 수 있습니다:
- 또한 프로퍼티 초기화를 생성자 본문이나 초기화 블록에서 프로퍼티 선언으로 이동할 수 있습니다:
- 오랫동안 기대되었던 하나의 기능은 함수와 프로퍼티를 오버라이딩하는 완성입니다:
- M13 이후 IDE는 실시간으로 가져오기를 최적화합니다. 모호하지 않은 가져오기 추가 기능도 지원됩니다. 한 번 시도해보세요:
설치
IntelliJ IDEA 15 Public Preview에는 Kotlin M14가 번들로 제공되므로 별도로 설치할 필요가 없습니다.
IntelliJ IDEA 14.1 — 플러그인을 평소와 같이 업데이트하십시오.
P.S. Kotlin에 대해 토론하고 경험을 나누려면 Slack 채널에 가입하세요!
원문
https://blog.jetbrains.com/kotlin/2015/10/kotlin-m14-is-out/
'Kotlin > Release Notes' 카테고리의 다른 글
[Kotlin Release Notes] The Kotlin Language: 1.0 Beta is Here! (0) | 2023.08.29 |
---|---|
[Kotlin Release Notes] Kotlin 1.0 Beta Candidate is Out! (0) | 2023.08.29 |
[Kotlin Release Notes] Kotlin Eclipse Plugin 0.3.0 (1) | 2023.08.28 |
[Kotlin Release Notes] Kotlin M13 is out! (0) | 2023.08.28 |
[Kotlin Release Notes] Kotlin M12 is out! (0) | 2023.08.28 |
댓글