假设我们有一个类构造函数,它接受具有默认值的参数。Scala可以选择提供名为默认参数
class A(val p1 : Int = 3, val p2 : Int = 4)
比方说,我无法控制这个类,也无法修改它。我想要做的是调用A的构造函数p1 = 5,p2 =(如果condition1 == true,那么5 else默认值)。要做到这一点的方法之一是
if(condition1)
x = new A(5,5)
else
x = new A(5)
正如你所看到的,这很容易得到大的,如果有很多参数,每次都必须有条件地供给。我想要的是类似
x = new A(p1 = 5, p2 = <if condition1 = true then 5 else default>)
我该怎么做?需要注意的是A类的字段是丘壑,所以实例A.
创建一个不带参数的一次性“A”是否很昂贵,以便您可以读取其所有默认值并稍后在'if'表达式中使用它们? –
我想过这个解决方案。它并不昂贵,但感觉有点冒险。如果可能,我想避免首先读取默认参数。 – DSR
查看http://docs.scala-lang.org/sips/completed/named-and-default-arguments.html上的最后一节“Default arguments”。看起来你可以调用方法来获取默认值。顺便说一句,如果你想出一些好东西,请回答你自己的问题! –