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

Sim*_*mon 1 scala optional-parameters

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

我定义了一个这样的类:

case class Image (imageId: Long, userId: Option[Long])
Run Code Online (Sandbox Code Playgroud)

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

var newImage = new Image(1)
Run Code Online (Sandbox Code Playgroud)

我收到此错误,虽然我使用的是Option[Long]:

not enough arguments for constructor 
Unspecified value parameter userId.
Run Code Online (Sandbox Code Playgroud)

我做错了什么?谢谢 ;)

Bri*_*ian 6

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

case class Image(imageId, Long, userId: Option[Long] = None)
Run Code Online (Sandbox Code Playgroud)

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

scala> var newImage = new Image(1)
newImage: Image = Image(1,None)
Run Code Online (Sandbox Code Playgroud)

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

scala> var newImage = new Image(1, Some(42))
newImage: Image = Image(1,Some(42))
Run Code Online (Sandbox Code Playgroud)