Kotlin Beta 1.7.0


Pierwsze wydanie pokazowe wersji 1.7.0 jest już dostępne. Beta 1.7.0 zawiera:

  • Zmiany w sugestiach konstruktora.
  • Zwrot funkcji odbioru min() i max().
  • Stabilizacja typów zdecydowanie nie dopuszczających wartości null.
  • Aktualizacje dla nowego menedżera Kotlin/Native Memory Manager.

Sugestie konstruktora

Sugestie konstruktora to specjalny rodzaj podpowiedzi o typie, który jest przydatny podczas wywoływania ogólnych funkcji konstruktora. Pomaga kompilatorowi wywnioskować argumenty typu wywołania przy użyciu informacji o typie innych wywołań wewnątrz argumentu lambda.

W tej wersji sugestie konstruktora jest automatycznie aktywowane, jeśli zwykłe wnioskowanie o typie nie może uzyskać wystarczających informacji o typie bez określenia opcji kompilatora -Xenable-builder-inference, którą wprowadzono w wersji 1.6.0.

Oznacza to, że teraz można pisać własne konstruktory, które używają wnioskowania o typach konstruktorów bez stosowania dodatkowych adnotacji lub opcji.

Zwrot funkcji kolekcji min() i max()

W Kotlinie 1.4 zmieniono nazwy funkcji min() i max() na minOrNull() i maxOrNull(). Te nowe nazwy lepiej odzwierciedlają ich zachowanie — zwracają wartość null, jeśli kolekcja odbiorników jest pusta. Pomogło to również dostosować zachowanie funkcji do konwencji nazewnictwa używanych w całym interfejsie API kolekcji Kotlin.

To samo dotyczyło minBy(), maxBy(), minWith() i maxWith(), które otrzymały swoje synonimy *OrNull() w Kotlin 1.4. Starsze funkcje, których dotyczyła ta zmiana, były stopniowo wycofywane.

Kotlin 1.7.0-Beta ponownie wprowadza oryginalne nazwy funkcji, ale z typem zwracanym bez wartości null. Odnowione min(), max(), minBy(), maxBy(), minWith() i maxWith() teraz ściśle zwracają element kolekcji lub zgłaszają wyjątek.

Stabilizacja typów zdecydowanie niepodlegających zerowaniu

Kotlin 1.7.0 będzie miał stabilne typy absolutnie nie dopuszczające wartości null, które zostały wprowadzone w Kotlin 1.6.20.

Te typy zostały dodane, aby zapewnić lepszą interoperacyjność podczas rozszerzania ogólnych klas i interfejsów Java.

Od wersji Kotlin 1.6.20 można było oznaczyć parametr typu ogólnego jako nie akceptujący wartości null w witrynie użytkowania za pomocą nowej składni T & Any. Forma składniowa pochodzi z notacji typów przecięć i jest teraz ograniczona do parametru typu z dopuszczalnymi wartościami null górnych granic po lewej stronie & i non-nullable Any po prawej stronie.

Dopasowanie z Regex na określonej pozycji

Funkcje Regex.matchAt() i Regex.matchesAt(), wprowadzone w wersji 1.5.30, są teraz stabilne. Zapewniają sposób sprawdzenia, czy wyrażenie regularne ma dokładne dopasowanie w określonej pozycji w ciągu lub CharSequence.

  • MatchAt() sprawdza dopasowanie i zwraca wynik logiczny.
  • matchAt() zwraca dopasowanie, jeśli zostało znalezione, lub null, jeśli nie zostało znalezione.

Aktualizacje nowego Kotlin/Native Memory Manager

Nowy menedżer pamięci eliminuje różnice między platformami JVM i Native. Zapewnia spójne doświadczenie programisty w projektach wieloplatformowych. Między innymi znacznie łatwiej będzie teraz tworzyć nowe wieloplatformowe aplikacje mobilne, które działają zarówno na Androidzie, jak i iOS.

Nowy menedżer pamięci Kotlin/Native znosi ograniczenia dotyczące udostępniania obiektów między wątkami. Zapewnia również pozbawione wycieków jednoczesne prymitywy programistyczne, które są bezpieczne i nie wymagają specjalnego zarządzania ani adnotacji.

Obsługa nazwanych grup przechwytujących w JS i Native

Od wersji Kotlin 1.7.0-Beta nazwane grupy przechwytujące są obsługiwane nie tylko w JVM (1.8 i nowsze), ale także w JS i Native.

Aby nadać nazwę grupie przechwytywania, wystarczy użyć składni (?grupa) w wyrażeniu regularnym. Aby uzyskać tekst dopasowany przez grupę, zamiast tego należy wywołać nowo wprowadzoną funkcję MatchGroupCollection.get() i przekazać nazwę grupy.

Nazwane odniesienia wsteczne

Można teraz również używać nazw grup podczas odwoływania się do grup. Odwołania wsteczne pasują do tego samego tekstu, co poprzednio dopasowane przez grupę przechwytywania.

Nazwane grupy w wyrażeniach zastępujących

Odwołania do nazwanych grup mogą być już używane z wyrażeniami zastępczymi.

Wystąpienia ${nazwa} w ciągu zastępczym są zastępowane podsekwencjami odpowiadającymi przechwyconym grupom o określonej nazwie.