У меня есть функция, которая выглядит примерно так:
fun MyInput?.toOutput() : Output? {
if (this == null) return null
return Output(this.someValue)
}
В местах, где я знаю, что мой MyInput
не равен нулю (например, внутри метода, который принимает input: MyInput
в качестве аргумента), я бы хотел использовать input.toOutput
в качестве Output
вместо Output?
Я пытался использовать
contract {
returnsNotNull() implies (this@toOutput != null)
}
Но это имеет значение в обратном направлении. Это говорит мне о том, что если toOutput
возвращает ненулевой тип, то мой input
был не нулевым. Я хочу рассказать анализатору вещи о возвращаемом значении на основе аргументов. В Java я мог бы использовать org.jetbrains.annotations.@Contract("null -> null ; !null -> !null")
для этого.
Есть ли способ сделать это в Котлине?