相关疑难解决方法(0)

Scala singleton工厂和类常量

好吧,在关于'类变量作为常量'的问题中,我得到的事实是,在"官方"构造函数运行之后(即直到你有一个实例),常量才可用.但是,如果我需要伴侣单身人士在课堂上进行调用怎么办:

object thing {
    val someConst = 42
    def apply(x: Int) = new thing(x)
}

class thing(x: Int) {
    import thing.someConst
    val field = x * someConst
    override def toString = "val: " + field
}
Run Code Online (Sandbox Code Playgroud)

如果我首先创建伴随对象,'new thing(x)'(在伴侣中)会导致错误.但是,如果我首先定义类,'x*someConst'(在类定义中)会导致错误.

我也尝试将类定义放在单例中.

object thing {
    var someConst = 42

    def apply(x: Int) = new thing(x)

    class thing(x: Int) {
        val field = x * someConst
        override def toString = "val: " + field
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,这样做会给我一个'thing.thing'类型的对象

val t = thing(2)
Run Code Online (Sandbox Code Playgroud)

结果是 …

syntax scala scala-2.8

1
推荐指数
1
解决办法
1684
查看次数

标签 统计

scala ×1

scala-2.8 ×1

syntax ×1