MyT*_*tle 3 scala scala-option
据我所知,我们应该避免null在Scala中使用.如果某些字段在逻辑上不具有" Option无价值",那么我们不应该使用以避免过度使用Options.
所以让我们来看看代码.我有课
case class User (name: String)
Run Code Online (Sandbox Code Playgroud)
并且我100%确定该name字段不能null,因为它我只使用String而不是Option[String].
问题是一些标准的Scala方法回到了我的身边Option.(在我的例子中,该IterableLike#find方法返回Option)
所以问题是User当我有name包装时我如何创建实例Option?要清楚一点,这就是代码:
val userName: Option[String] = myList.find(...)
val user = User(userName.get) // or may be I should use userName.orNull ? or throw exception?
Run Code Online (Sandbox Code Playgroud)
我听说这Option.get不是优雅的解决方案.orNull方法几乎相同get.
您想要将您的地图映射Option[String]到Option[User]:
val userName: Option[String] = myList.find(...)
val user: Option[User] = userName.map(n => User(n))
Run Code Online (Sandbox Code Playgroud)