【发布时间】:2017-09-01 00:29:02
【问题描述】:
参考下面的链接 Scala: curried constructors
class Person(var name : String, var age : Int, var email : String)
def mkPerson = (n : String) => (a : Int) => (e : String) => new Person(n,a,e)
def makeName(s:String):String="Hello"+s
def makeAge(age:Int):Int=age
def makeEmail(email:String):String=email
val s=mkPerson(makeName("abcd"))
val t1=s(makeAge(2))
val t2=t1(makeEmail("abc@gmail.com"))
我创建了方法makeName,makeAge,makeEmail 来丰富这些值。实际用例不同
问题
- 有没有办法通过案例类实现上述目标
- 我不想使用变量
s,t1,t2 - 我们能否通过部分应用函数来实现上述目标
【问题讨论】:
-
因此,一旦创建了
val p: Person,您是否希望p.name包含Hello前缀(即您是否要“忘记”原始值并使用“丰富”值只)? -
是的,我想要丰富,我想要案例类的解决方案。实际上,我有丰富的东西,它们将返回值,我想构建我在代码中显示的方式。使用部分应用函数的任何其他可能方式
-
你想要在这里实现的目标对我来说仍然不清楚:你是否希望“自动”丰富对
Person("a", 1, "b")的调用(即必然会导致Person(Helloa, 1, b)?如果不是,你想要一个单独的mkPerson(String, Int, String): Person创造了“丰富”的人?最佳用法会是什么样子? -
mkPerson(String, Int, String): Person 方法
标签: scala case-class