加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 重用案例类的实例

发布时间:2020-12-16 18:51:14 所属栏目:安全 来源:网络整理
导读:假设我的应用程序在很长一段时间内反复使用了很多Move对象,其中Move定义如下: sealed trait Playercase object P1 extends Playercase object P2 extends Playercase object P3 extends Playercase object P4 extends Playersealed trait Keycase object Up
假设我的应用程序在很长一段时间内反复使用了很多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种不同的可能输入,以及40种不同的移动.有没有办法要求编译器通过创建所有可能的Move一次并重用实例来优化这些类型?

解决方法

您可以使用scalaz备忘录:

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读