可选择Kotlin箭头透镜
我正在尝试将Arrow optics用于一个带有可选择Kotlin箭头透镜,kotlin,Kotlin,我正在尝试将Arrow optics用于一个带有选项字段的类。以下代码可以正常工作: @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&g
选项
字段的类。以下代码可以正常工作:
@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)
@光学
数据类TestClass(val opt:Option){companion object}
val tc=TestClass(有些(“你好”))
val tc2=TestClass.opt.set(tc,无)
看起来最后一个集合
需要的是字符串
,而不是选项
。如何使用镜头清除可选
(我意识到在这种情况下,我可以只使用copy()
甚至手动复制,但我有一个类似类被深度嵌套的真实情况)。我找到了解决方案:@optics
还将生成一个optionFieldName
镜头,例如
@optics
data class TestClass(val opt: Option<String>) { companion object }
val tc = TestClass(Some("Hello"))
val tc2 = TestClass.optionOpt.set(tc, None)
@光学
数据类TestClass(val opt:Option){companion object}
val tc=TestClass(有些(“你好”))
val tc2=TestClass.optionOpt.set(tc,无)