gpt4 book ai didi

scala - 重用案例类的实例

转载 作者:行者123 更新时间:2023-12-04 15:21:57 25 4
gpt4 key购买 nike

假设我的应用程序使用了很多 Move在很长一段时间内一遍又一遍的对象,其中Move定义如下:

sealed trait Player
case object P1 extends Player
case object P2 extends Player
case object P3 extends Player
case object P4 extends Player

sealed trait Key
case object Up extends Key
case object Down extends Key
case object Right extends Key
case object Left extends Key
case object Space extends Key

sealed trait Action
case object Press extends Action
case object Release extends Action

case class Input(key: Key, action: Action)
case class Move(input: Input, player: Player)

这是 10 种不同的可能 Input s 和 40 种不同的 Move s。有没有办法让编译器通过创建所有可能的类型来优化这些类型 Move s 一次并随着时间的推移重用实例?

最佳答案

您可以使用 scalaz Memo :

val moveCache = Memo.mutableHashMapMemo{ip: (Input, Player) => Move(ip._1, ip._2)}
....
val myMove = moveCache((myInput, myPlayer))

老实说,我非常怀疑这会对性能产生重大影响。在降低代码可读性之前,请确保您有清晰的分析结果,表明它实际上使您认为有所不同。

关于scala - 重用案例类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27645472/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com