在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) } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |