Kotlin1.0Beta4의 변경 사항
8168 단어 Kotlin
22일째는 @rabitarochan 선생의 유형 보안에서 Kotlin 속성 가져오기이다.
오늘의 내용입니다. 마침 어제 Kotlin 1.0Beta4가 나왔기 때문에 변경점을 번역해 보았습니다.
증분 컴파일 개선
Kotlin 증량 컴파일을 더 빨리 실행하기 위해 정확한 의존 검출 알고리즘을 새로 만들었습니다.
아직 experimental이지만 우리가 이미 사용한 청년 상황이라면 잘 움직일 수 있을 거예요.
사용하기 위해 아래의 설정을 해 보세요.
Settings |
Build, Execution, Deployment |
Compiler |
Kotlin Compiler |
Enable precise incremental compilation (experimental)
같은 증분 컴파일 지원도 Gradle에 옵니다.기대해주세요.언어
모든 변경 사항부터 몇 개의 고광선을 설명한다.
과부하 솔루션 변경
과부하 솔루션을 수정하여 이제 Kotlin은 SAM-converted Java 함수를 더 많은 구성원으로 지정합니다(함수?)그대로 처리하다.(이전에는 extensions처럼 행동하기 위해 사용되었다.)
이 수정은 매우 중요하다.그렇지 않으면 컴파일러를 통해 번거로운 방법(과부하)으로 설명해야 하는 경우가 많기 때문이다.
안타깝게도 결과가 비교적 평범하게 망가진 경우는 적어도 한 가지가 있다.
하지만 이 수정 자체는 매우 간단하다.
현재 컴파일러는
file.listFiles { it.name == "..." }
에 대해 지적했다.이 이유는 좀 복잡해요.
listFiles
과부하 3개file.listFiles { it -> ... }
속성은 매개 변수가 없는 함수 대상으로 사용할 수 있습니다
예: Kotlin에서
String::length
은 속성이지 함수가 아닙니다.하지만 함수가 기대되는 곳에서 사용할 수 있다면 편리하다.예를 들어 다음과 같은 느낌.
val lengths = strs.map(String::length)
그래서 나는 이 작법을 인정하기로 결정했다.다시 말하면 (R) -> T
함수로 기대되는 API가 있으면 반환값의 유형을 T로 하는 R의 속성을 참조할 수 있다.앞으로 사용할 키워드 예약
우리는 Kotlin의 향후 발매를 위해 몇 가지 새로운 기능을 추가할 계획이다.그래서 필요한 키워드를 미리 예약하기로 했다.
미래의 모든 것을 예측할 수 없다는 것을 이해하다.그러나 여기에 열거한 것은 열심히 예상한 것이다(미래의 기능은 아직 상세하게 설계할 수 없지만 이런 것들로 최대한 편리하게 하려고 한다)
yield
키워드로 예약sealed
용when
의 사전단어 예약typeof
키워드로 예약.JS에서 사용jsTypeOf()
async
{
과fun
의 사전단어로 예약합니다.async {...}
대신 async () {...}
선언을 해야 한다.이게 안 예쁜 건 알지만 좋은 옵션을 못 찾았어요.코드 보충 중
()
이 자동으로 삽입됩니다.Code Cleanup
는 우리가 기존의 코드에서 이동하는 것을 도울 수 있다.Java Wildcards
Kotlin이 변수형을 어떻게 바꾸는지에 몇 가지 문제가 있다.예를 들어
List<Foo>
자바의 List<? extends Foo>
아니면 단순한 List<Foo>
등의 문제다.상세한 상황은 잠시 말하지 않고 다음 단계를 결정했다.
List<@JvmWildcard String>
항상 Java의 List<? extends String>
@JvmSuppressWildcards
(유형 또는 와일드카드를 포함하는 선언에서 사용)fun foo(l: List<String>) // in Java: List<String> (String is final)
fun foo(l: List<@JvmWildcard String>) // in Java: List<? extends String>
interface Open
fun bar(p: List<Open>) // in Java: List<? extends Open> (Open is not final)
@JvmSuppressWildcards
fun bar(p: List<Open>) // in Java: List<Open>
주의: 이것은 집합뿐만 아니라declaration-sitevariance를 포함한 모든 유형을 고려합니다라이브러리 변경
표준 라이브러리를 정리하고 있습니다.이것도 약간의 재포장을 포함한다.
kotlin.test
포장은 단독jar-filekotlin-test.jar
로 이동합니다.Quick fix는 IDE에서 사용할 수 있으며 자동으로 종속을 추가합니다.Code Cleanup
강조표시
Kotlin의
Int::class
은 서로 다른 컨텍스트에서 Java의 int.class
또는 Integer.class
에 해당할 수 있습니다.두 개 중 특정한 것을 쉽게 사용할 수 있도록 두 개의 속성을 가져왔습니다.Int::class.javaPrimitiveType
반환Int.class
Int::class.javaObjectType
반환Integer.class
IntArray(5) { it * 3 }
과 같은 내용도 가능하다.즉, 초기화 후 기본체의 배열을 만들 수 있다장래 변경:collection에서null의 의미
이후 버전의 JDK는 더 이상 null을 허용할 수 없는 컬렉션을 만들었다.예를 들어, JavaDoc 의 설명
java.util.Map.computeIfAbsent
もし特定のkeyがまだvalueと紐付いていない (もしくはnullにマッピングされている)ならば、
その値を与えられたmapping関数を利用して計算しようと試み、nullでないようにこのマップに入力しようとする
이런 규칙들은 이런 조작을 하는 원자 속성에 대해 본질적이기 때문에 우리도 이에 상응하기로 결정했다.그러나null-free의concurrentcollection을 조작하려고 할 때, Kotlin의 extension 함수는 적당한 동작을 보장할 수 없습니다.
따라서
getOrPut
등 똑같이 null값이 나타나지 않도록 처리된 함수의 동작도 바뀌어야 한다.코드 업데이트를 위해deprecationwarnings의 추천을 따르십시오.
IDE의 새로운 기능
Quick-fix
추가코드를 서로 다른 상하문에 붙일 때 등 기호의 이름을 조정하는 것이 편리하다.Go to Test
과Create Test
동작을 최고급 함수동작으로 한다Go to class
및 Search everywhere
Kotlin의 내장식앞으로
베타 기간이 끝나면 RC와 1.0을 기다립니다.
1.0 이후에 pre-release 버전의 Kotlin으로 컴파일된 코드가 있는지 확인하고 싶습니다.그러니까 RC 컴파일러로 모든 오래된 코드를 강제로 다시 컴파일하세요.JetBrains 이외의 라이브러리 관리자와 함께 당시 광범위하게 이용되었던 모든 라이브러리가 다시 컴파일되었는지 확인하고 싶습니다.
그리고 우리는 이곳에서 전통을 없앨 기회를 얻을 계획이다.
마리야, Kotlin!
여기서 마치겠습니다.RC 기대된다.
나는 번역에 잘못된 점이 많다고 생각한다. 만약 편집의 요구를 받을 수 있다면 큰 도움이 될 것이다.
내일은 yy_저는 Yank입니다!
Reference
이 문제에 관하여(Kotlin1.0Beta4의 변경 사항), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mattak/items/ba0e3294d539a86f120f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)