Я пытаюсь использовать оптику 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()
или даже сделать ручное копирование, но у меня есть реальная ситуация, когда подобный класс глубоко вложенная).