我创建了一个返回Date值的简单方法。 在处理方法“convertStrToDate”之前,我想做一个空检查条件。所以,如果它不是null,那么我想处理该方法。 面临的问题是变量returnvar的范围在“If循环”中。所以我不能在if循环之外使用变量“returnvar”,其中我实际上需要作为输出返回到方法。 任何人都可以帮忙解决这个问题。
def convertStrToDate(inputvar: String): Date = {
if (inputvar != null && inputvar.nonEmpty) {
val format = new java.text.SimpleDateFormat(inputvar)
val formattedvar: Date = format.parse(inputvar)
var returnvar = new java.sql.Date(formattedvar.getTime());
}
return returnvar
}
答案 0 :(得分:3)
您可以将Option
用于此目的。
如果您的计算成功,请返回Some(value)
或返回None
请注意,方法的返回类型更改为Option[Date]
def convertStrToDate(inputvar: String): Option[Date] = {
if (inputvar != null && inputvar.nonEmpty) {
val format = new java.text.SimpleDateFormat(inputvar)
val formattedvar: Date = format.parse(inputvar)
var returnvar = new java.sql.Date(formattedvar.getTime())
Some(returnVar)
} else None
}
请注意,return
在scala中是可选的
惯用法。
如果inputvar有效,则获取Some(input)
,然后映射以生成后续值。
def convertStrToDate(inputvar: String): Option[Date] = {
Option(inputvar).filter(_.nonEmpty).map { inputStr =>
val format = new java.text.SimpleDateFormat(inputStr)
val formattedvar: Date = format.parse(inputStr)
new java.sql.Date(formattedvar.getTime())
}
}