Kotlin Стрелка объектива для варианта - PullRequest
0 голосов
/ 20 марта 2020

Я пытаюсь использовать оптику Arrow для класса с полем Option. Следующий код работает нормально:

@optics
data class TestClass(val opt: String) { companion object }

val tc = TestClass("Hello")
val tc2 = TestClass.opt.set(tc, "def")

, но (похожий) следующий код не работает:

@optics
data class TestClass(val opt: Option<String>) { companion object }

val tc = TestClass(Some("Hello"))
val tc2 = TestClass.opt.set(tc, None)

Похоже, что последний set ожидает String не Option<String>. Как я могу использовать линзы для очистки Optional?

(я понимаю, что в этом случае я могу просто использовать copy() или даже сделать ручное копирование, но у меня есть реальная ситуация, когда подобный класс глубоко вложенная).

1 Ответ

0 голосов
/ 20 марта 2020

Я нашел решение: @optics также создаст объектив optionFieldName, например,

@optics
data class TestClass(val opt: Option<String>) { companion object }

val tc = TestClass(Some("Hello"))
val tc2 = TestClass.optionOpt.set(tc, None)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...