我正在爲一個遊戲編寫代碼,作爲在熟悉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範式,有點兒。這主要是一個學習練習。 –
但你的功能只需要一個參數......你如何期望咖喱它? –