Мне бы хотелось, чтобы работал следующий код kotlin:
val result: Try<Option<String>> = Success(Some("test"))
val test = when {
result is Success && result.value is Some -> result.value.t // not working
result is Success && result.value is None -> "Empty result"
result is Failure -> "Call failed!"
else -> "no match!"
}
Я использую библиотеку стрелок для монады Try and Option.
К сожалению, я могу получить доступ только к значениюпервое условие «есть успех», а не второе условие «это кто-то».Таким образом, я могу сделать только «result.value», тогда я получу опцию String.
Я что-то упустил?Это сэкономит мне много внутренних вызовов ".map" и ".fold".
Обновление:
Сначала мне нужно разыграть его, что ужасно:
result is Success && result.value is Some -> (result.value as Some<String>).t