2013년 2월 27일
Kotlin M5.1이라는 새로운 버전이 오늘 출시되었는데, 이 중 일부는 사실상 큰 변화입니다. 예를 들어, Scala 라이브러리인 Akka를 사용할 수 있게 되었습니다. 이 글은 이러한 변화에 대한 간략한 개요를 제공합니다.
스칼라 클래스에 대한 더 나은 지원. Akka
이론적으로 모든 JVM 언어는 상호 운용성이 매우 쉽습니다. 그러나 실제로는 불쾌하거나 사실상 불가능하게 하는 여러 작은 문제가 있습니다.
그 중 하나의 문제는 클래스 이름에서 “$” 기호의 모호한 사용과 관련이 있으며, 이는 JVM에서 잘 알려진 문제입니다. 이 문제가 해결되어 이제는 이전에 사용할 수 없던 일부 Akka 클래스, 예를 들어 Duration,을 사용할 수 있습니다.
Akka가 Kotlin에서 어떻게 보이는지 알아보려면 이 예시를 참고하세요.
더욱 도움이 되는 IDE
Cornell과 Jagiellonian 대학의 학생들의 도움으로 M5.1에서는 많은 퀵 픽스를 구현했습니다. IDE가 어떤 오류나 경고에 대해 불평하면 Alt+Enter를 간단히 눌러 제안되는 수정 사항 목록을 얻을 수 있습니다.
파라미터는 불변입니다
가변 파라미터에 대한 지원을 제거했습니다.
fun foo(var x: Int) {
x = 5
}
주된 이유는 이것이 혼동을 일으킨다는 것입니다: 사람들은 이것이 참조에 의한 매개변수 전달을 의미한다고 생각하는 경향이 있습니다. 또한, 주 생성자에서 "val" 또는 "var"는 함수 선언에서의 것과 다른 의미를 가집니다. 더욱이, 파라미터를 변형하는 것은 좋은 스타일이 아니므로, 이제는 함수, catch 블록 또는 for-loop에서 파라미터 앞에 "val" 또는 "var"를 쓸 수 없습니다.
기존 코드가 깨진다면 IDE를 사용하여 전체 프로젝트를 한 번에 빠르게 수정할 수 있습니다.
http://www.youtube.com/watch?v=JY-Vx8FjtIM
Java의 protected static 메서드 지원
일부 Java 프레임워크, 예를 들어 Android,는 하위 클래스에서 protected static 메서드가 사용 가능해야 합니다. 비록 이것이 의문스러운 패턴처럼 보일지라도, Kotlin은 이제 이것을 지원합니다.
익명 객체
아래 코드는 Kotlin의 익명 내부 클래스에 대한 유사체를 사용합니다:
val x = object : A() { ... }
x의 타입은 무엇인가요? 예전에는 익명 타입이었지만, x를 외부에서 사용하면 접근할 수 없습니다: 타입이 유효하지 않습니다. 이제 타입은 A가 될 것입니다. 이는 외부에서 볼 수 있는 속성에만 적용됩니다. 즉, x가 로컬 변수라면 여전히 익명 타입을 가지게 됩니다, 왜냐하면 그것은 무해하기 때문입니다.
클래스 오브젝트는 자바에서 사용 가능합니다
코틀린 클래스에는 정적 멤버가 없고 대신 클래스 오브젝트를 가지고 있습니다:
class A {
class object {
val x = 1
}
}
이제 몇 가지 버그를 수정한 뒤에 자바 코드에서 클래스 오브젝트의 멤버에 접근할 수 있습니다:
public static void main(String[] args) {
System.out.println(A.object.instance$.getX());
}
컴파일러
컴파일러도 개선되고 있습니다: nullable 타입과 제네릭이 상호 작용하는 코너 케이스에 대한 몇 가지 수정과 범위에 대한 루프 최적화가 있습니다.
요구 사항
코틀린 M5.1은 IntelliJ IDEA 12.0.4가 필요합니다 (12.1의 EAP은 아직 지원되지 않음), 플러그인 저장소에서 다운로드할 수 있습니다.
좋은 코틀린 되세요!
원문
'Kotlin > Release Notes' 카테고리의 다른 글
[Kotlin Release Notes] Kotlin M5.3: IntelliJ IDEA 13, Delegated Properties and more (0) | 2023.08.27 |
---|---|
[Kotlin Release Notes] Kotlin M5.2: IntelliJ IDEA 12.1 and Gradle (0) | 2023.08.27 |
[Kotlin Release Notes] Kotlin M5 is Out! (0) | 2023.08.27 |
[Kotlin Release Notes] Kotlin M4 is Out! (0) | 2023.08.27 |
[Kotlin Release Notes] Dogfooding Kotlin and M3.1 (0) | 2023.08.27 |
댓글