我有以下的Scala类:

class Person(var name : String, var age : Int, var email : String)

我想使用Person构造作为咖喱功能:

def mkPerson = (n : String) => (a : Int) => (e : String) => new Person(n,a,e)

这个作品,但有另一种方式来做到这一点?这种做法似乎有点繁琐,而且容易出错。我能想象像Function.curried,但后来的构造函数。

有帮助吗?

解决方案

此将工作:

def mkPerson = (new Person(_, _, _)).curried

其他提示

有点晚于这个党,但如果你让Person的情况下类:

scala> case class Person(name: String, age: Int, email: String)
defined class Person

Scala中生成包含Person.apply(String, Int, String)和一些其他的东西为你伴侣对象。然后,你可以这样做:

scala> Person.curried
res5: String => (Int => (String => Person)) = <function1>

哪个简写:

(Person.apply _).curried

它与变种参数太

可能是这样:

val mkPerson = Function.curried((n: String,a:Int,e:String) => new Person (n,a,e))
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top