延迟Scala中的val定义

时间:2015-10-14 12:23:58

标签: scala

拥有以下内容:

    var jdt : JDateTime = null

    try {
        jdt = new JDateTime(timeString, "YYYY-MM-DD hh:mm:ss,mss")
    } catch {
        case e : Exception => return Option.empty
    }

我希望jdtval,因为它是一个常数值。有没有scala语法技巧可以在这里工作?例如,如果发生异常,请设置null等。

2 个答案:

答案 0 :(得分:9)

不是语法技巧,只是库使用:

import scala.util.Try

val jdt = Try(new JDateTime(timeString, "YYYY-MM-DD hh:mm:ss,mss")).toOption.orNull

尽管如此,我建议将其保留在Option而不是null

答案 1 :(得分:2)

这也是允许的,因为try会产生结果:

val jdt = 
    try {
        new JDateTime(timeString, "YYYY-MM-DD hh:mm:ss,mss")
    } catch {
        case e : Exception => return Option.empty
    }

即使在java中我也可以用final做到这一点,因为我推迟设置变量,直到我必须:

final Date date;
try {
    date = new SimpleDateFormat().parse("");
} catch (ParseException e) {
    return null;
}