Scala 如何实例化新的 Option[java.sql.Date] 类型
Scala how to instantiate new Option[java.sql.Date] type
我有 var date_of_birth2 : Option[java.sql.Date] = None.
稍后我必须用字符串填充date_of_birth2。
String date = "01/01/1990"
var formate = new SimpleDateFormat("dd/MM/yyyy").parse(date)
var aDate = new java.sql.Date(formate.getTime());
但是aDate 只是java.sql.Date 的类型。我该如何分配?
var mdate_of_birth2 : Option[java.sql.Date] = date // date 只是 String 类型
你把它包裹在 Some
:
var mdate_of_birth2: Option[java.sql.Date] = Some(aDate)
不过,您应该看看是否可以重构代码以使其成为 val
。
不像@hezamu 所建议的那样显式使用 Some
,您可以像这样在 Option
同伴上使用 apply
方法:
val maybeADate:Option[Date] = Option(aDate)
在这种情况下,如果 aDate
为空,那么您的 Option
将是 None
而不是 Some(null)
,这是不受欢迎的。
由于 parse
方法会在出现格式错误时抛出异常,您也可以考虑使用 Try
,将失败压缩到 None
.
val aDate = Try(new SimpleDateFormat("dd/MM/yyyy").parse(date))
.map(d => new java.sql.Date(d.getTime()))
.toOption
如果您 希望它抛出异常,那么我会使用 Option.apply
.
使用@cmbaxter 的答案
我有 var date_of_birth2 : Option[java.sql.Date] = None.
稍后我必须用字符串填充date_of_birth2。
String date = "01/01/1990"
var formate = new SimpleDateFormat("dd/MM/yyyy").parse(date)
var aDate = new java.sql.Date(formate.getTime());
但是aDate 只是java.sql.Date 的类型。我该如何分配?
var mdate_of_birth2 : Option[java.sql.Date] = date // date 只是 String 类型
你把它包裹在 Some
:
var mdate_of_birth2: Option[java.sql.Date] = Some(aDate)
不过,您应该看看是否可以重构代码以使其成为 val
。
不像@hezamu 所建议的那样显式使用 Some
,您可以像这样在 Option
同伴上使用 apply
方法:
val maybeADate:Option[Date] = Option(aDate)
在这种情况下,如果 aDate
为空,那么您的 Option
将是 None
而不是 Some(null)
,这是不受欢迎的。
由于 parse
方法会在出现格式错误时抛出异常,您也可以考虑使用 Try
,将失败压缩到 None
.
val aDate = Try(new SimpleDateFormat("dd/MM/yyyy").parse(date))
.map(d => new java.sql.Date(d.getTime()))
.toOption
如果您 希望它抛出异常,那么我会使用 Option.apply
.