Описание тега kotlin-contracts
1
ответ
Котлин контракты: ссылка не-ноль из двух свойств
Скажем, у меня есть такой класс: data class URLAndPath( val baseUrl: URL, val path: String? ) { val url get(): URL? = try { path?.let { URL(baseUrl, it) } } catch(_: Exception) { null } init { require(path == null || url != null) { "Invalid URL $bas…
12 дек '18 в 07:58
4
ответа
Контракты Kotlin: экземпляр assert на параметре reified type
Я пытаюсь написать функцию assert, которая проверяет, является ли данный объект типа T: @UseExperimental(ExperimentalContracts::class) inline fun <reified T> assertIsInstance(value: Any?) { contract { returns() implies (value is T) } Assertion…
08 ноя '18 в 10:29
1
ответ
После обновления до Kotlin 1.3 я до сих пор не могу использовать контракт
Я обновил плагин Kotlin в IDEA с 1.2.71 до 1.3.0 и убедился, что новый SDK - это Project SDK: Я ожидал, что смогу использовать новый kotlin.contracts.contract, но он темно-красный! Information:Kotlin: kotlinc-jvm 1.3.0 (JRE 1.8.0_181-b13) Error:(9, …
06 ноя '18 в 14:52
1
ответ
Контракт Kotlin выводит возвращаемое значение вместо значения аргумента
У меня есть функция, которая выглядит примерно так: fun MyInput?.toOutput() : Output? { if (this == null) return null return Output(this.someValue) } В местах, где я знаю, что мой MyInput не является нулевым (например, внутри метода, который принима…
25 апр '19 в 16:24
2
ответа
kotlin - убрать допустимость значения NULL из свойств класса
У меня есть класс с некоторыми свойствами, допускающими значение NULL data class RequestModel( val description: String? ) и функция проверки fun validate(model: RequestModel): RequestModel{ if(model.description == null) throw IllegalArgumentExceptio…
24 ноя '19 в 11:17
3
ответа
Как написать следующий контракт Kotlin?
Вопрос очень простой: (используя Kotlin 1.3.71) У меня есть следующие данные, похожие на эти: data class Location(val lat: Double, val lng: Double) Я хочу добиться безопасности типов с помощью такого вызова: val loc = location { lat = 2.0 lng = 2.0 …
02 апр '20 в 01:07
1
ответ
Использование контрактов Kotlin для приведения типа внутри предиката функции Iterable
У меня этот закрытый класс PictureEvent: sealed class PictureEvent { data class PictureCreated(val pictureId: String, val url: String) : PictureEvent() //more classes extending PictureEvent } Теперь из списка PictureEvents, я хочу получить первый Pi…
06 май '20 в 18:54
0
ответов
Дополнительные ограничения для компилятора kotlin с использованием контрактов
Я пытаюсь ввести дополнительные ограничения для компилятора kotlin: fun main() { val list = listOf(1) val bigList = listOf(3) list.second() } fun List<Int>.second(): Int { require(size > 1) return this[1] } Я ожидаю, что в этом случае компи…
20 сен '19 в 20:41
1
ответ
Kotlin - Почему контракты компилятора допускают только ссылки на параметры функции
При написании функции проверки часто эти функции проверки проверяют допустимость значения NULL. Несмотря на то, что после вызова этих функций члены-объекты можно безопасно использовать, как если бы они не допускали значения NULL, контракты компилято…
07 апр '21 в 02:19
0
ответов
Как работает контракт компилятора с нулевой проверкой Kotlin?
У меня есть пара настраиваемых функций области видимости, которые все похожи на эту: @OptIn(ExperimentalContracts::class) inline fun <R> R.applyIf(condition: Boolean, block: R.() -> Unit): R { contract { callsInPlace(block, InvocationKind.E…
17 сен '21 в 21:25
1
ответ
Каковы преимущества контракта Kotlin callInPlace?
Может ли кто-нибудь объяснить мне, в чем преимущества Kotlin?callsInPlace договор? Как компилятор использует знание того, что лямбда-функция будет вызвана на месте? Кроме того, разработчик получает какую-либо выгоду от этого? Например, смарткаст или…
01 фев '21 в 07:04
0
ответов
Контракты Kotlin не работают для нулевой проверки в функции расширения
Я пытаюсь написать функцию расширения, которая возвращает значение, если значение неnullили 0 и использовать контракт, чтобы гарантировать компилятору, что если я верну значение, отличное от нуля. Однако, похоже, он не работает с умным литьем. Он по…
19 янв '23 в 21:06
1
ответ
Может ли контракт Kotlin подразумевать невозможность обнуления всех vararg-аргументов функции?
Я хотел бы написать функцию верхнего уровня следующим образом: @ExperimentalContracts fun containsNull(vararg objs: Any?): Boolean { contract { returns(false) implies (/* ???? */) } for (o in objs) if (o == null) return true return false } так что я…
23 окт '22 в 22:00