kotlin - ArrowKT - 镜头调用给出编译错误
问题描述
我正在尝试遵循有关Arrow 的文档。Lens
但是,当我尝试编写镜头时
data class Player(val health: Int)
val playerLens: Lens<Player, Int> = Lens(
get = { player -> player.health },
set = { player, value -> player.copy(health = value) }
)
我收到以下错误:
4 type arguments expected for operator fun <S, T, A, B> invoke(): PLens<S, T, A, B>
我看到这Lens<S, T>
是 的类型别名PLens<S, S, T, T>
,那么为什么会出现这个编译错误?
Kotlin 版本 1.3.50
艾睿光学 0.10.0 版
解决方案
Kotlin typealias 在这里无法按预期工作。调用构造函数时,需要在此处指定 4 个参数:
Lens<Player, Player, String, String>(
get = { v -> v.health },
set = { v, value -> player.copy(health = value) }
)
我们根本没有指定它们,编译器可以从 lambda 参数类型中为您推断出它们
Lens(
get = { player: Player -> player.health },
set = { player: Player, value: Int -> player.copy(health = value) }
)
推荐阅读
- jquery - materializecss 芯片 onChipAdd 回调不起作用
- unix - 将 ZIP 命令从 windows 转换为 unix
- javascript - 无法在 PHP 中回显以 ajax 发送的 POST 参数
- elasticsearch - 如何使用弹性查询过滤网页中的 Kibana Dashbaord
- c# - ASP.Net Web 应用程序 VS ASP.net MVC Web 应用程序
- .net-core - 如何从 .netcore 中的令牌中删除“http://schemas.xmlsoap.org/ws/2005/05/identity/ urls”
- python - 第二次访问数据库后SQLite图像格式错误
- azure-devops - 如何在 Azure DevOps 项目中重命名 TFVC 存储库?
- c++ - 了解智能指针但错误:未分配被释放的指针
- python - 如何使用 python 和 selenium 将数据从列表输入到网站?