加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在scala中初始化var

发布时间:2020-12-16 09:29:49 所属栏目:安全 来源:网络整理
导读:我有一个类,我喜欢通过读一个配置文件来初始化我的var,该配置文件生成中间对象/ val,我想在一个方法中进行分组和隐藏。 这是最少的问题 – 我用一个param我称之为ctor,实际上是一个File来解析,而init-method生成的String在现实中比这里复杂得多,创建了
我有一个类,我喜欢通过读一个配置文件来初始化我的var,该配置文件生成中间对象/ val,我想在一个方法中进行分组和隐藏。
这是最少的问题 – 我用一个param我称之为ctor,实际上是一个File来解析,而init-method生成的String在现实中比这里复杂得多,创建了很多中间对象:

class Foo (val i: Int) {

    var s : String;

    def init () {
        s = "" + i 
    }

    init ()
}

这将产生错误:类Foo需要是抽象的,因为变量s没有被定义。在这个例子中,通过将String设置为“”:var s =“”;容易解决,但实际上该对象比String更复杂,没有适当的Null实现。

我知道,我可以使用一个选项,它比String更复杂的东西:

var s : Option [String] = None

def init () {
    s = Some ("" + i) 
}

或者我可以放弃我的方法。使用选项将迫使我一遍又一遍地写一些,没有太多的好处,因为没有必要没有别的,以我想我可以的方式初始化它。

有另一种方式来实现我的目标吗?

解决方法

而不是创建单独的初始化方法,您应该使用以下方式执行初始化:

class Foo(val i: Int) {
  var s: String = {
    var s0 = " "
    s0 += i
    // do some more stuff with s0
    s0
  }

  var dashedDate = {
    val dashed = new SimpleDateFormat("yy-MM-dd")
    dashed.format(updated)
  }

  // Initializing more than one field:
  var (x,y,z) = {
    var x0,y0,z0 = 0
    // some calculations
    (x0,z0)
  }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读