我正在为一个游戏编写代码,作为在熟悉Haskell之后学习Scala的练习。我开始与ADT如下:使用多个参数编写带有scala的懒惰咖喱
sealed class Circle(x: Double, y: Double, r: Double)
case class PlayerCircle (x: Double, y: Double, r: Double) extends Circle(x, y, r)
case class AICircle (x: Double, y: Double, r: Double) extends Circle(x, y, r)
我想写一个懒惰,咖喱VAL,做如下(Haskell的伪代码):
addToPlayer :: PlayerCircle -> Circle -> PlayerCircle
addToPlayer (PlayerCircle px py pr) (AICircle _ _ cr) = PlayerCircle px py (pr + cr)
addToPlayer player _ = player
我有以下几点:
def addToPlayer (wcircle : Circle) : PlayerCircle = wcircle match {
case AICircle (_, _, wr) => copy(this.x, this.y, this.r + wr)
case _ => this
}
什么是必要的,使这个函数咖喱和懒惰?
编辑:我已经搜索了答案,但还没有找到任何使用的文章,所以请帮助我与这一个。
你为什么要讨好它,让它懒惰?当你使用一个接受**多个**参数的函数并将其转换为一系列函数,每个函数都有参数时,currying也是。 –
我习惯了Haskell范式,有点儿。这主要是一个学习练习。 –
但你的功能只需要一个参数......你如何期望咖喱它? –