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)
我做错了什么?谢谢 ;)
要重申错误消息,您没有给它足够的参数.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)