虽然我使用Option [] Type,但构造函数的参数不够

时间:2014-11-13 23:05:50

标签: scala optional-parameters

我是scala的新手,我有一个非常简单的问题:

我定义了这样一个类:

case class Image (imageId: Long, userId: Option[Long])

但是如果我想创建一个只有imageId的类的实例:

var newImage = new Image(1)

虽然我使用Option[Long]

,但我收到此错误
not enough arguments for constructor 
Unspecified value parameter userId.

我做错了什么?谢谢;)

1 个答案:

答案 0 :(得分:6)

重申错误消息,你没有给它足够的参数。 Option不是可选的,因为您必须为其提供SomeNone的值。如果您不想提供值并想要使用默认值,您可以在构造函数中给出一个值,如下所示:

case class Image(imageId, Long, userId: Option[Long] = None)

然后您可以执行此操作并使用默认值None

scala> var newImage = new Image(1)
newImage: Image = Image(1,None)

当然,当你有一个值时,你仍然可以提供一个值。

scala> var newImage = new Image(1, Some(42))
newImage: Image = Image(1,Some(42))