Koz*_*łek 11 singleton scope scala
在Scala中对象是单身......所以如果我做:
trait SimpleTrait {
def setString(s: String): Unit = {
InnerTraitObject setString s
}
def getString(): String = {
return InnerTraitObject getString
}
object InnerTraitObject {
var str: String = ""
def setString(s: String): Unit = {
str = s
}
def getString(): String = {
return str
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后
class SimpleClass extends SimpleTrait{
/// empty impl
}
Run Code Online (Sandbox Code Playgroud)
和:
object App {
def main(args: Array[String]): Unit = {
val a = new SimpleClass();
val b = new SimpleClass();
a.setString("a");
println("A value is " + a.getString());
println("B value is " + b.getString());
}
}
Run Code Online (Sandbox Code Playgroud)
我想看看
A value is a
B value is a
Run Code Online (Sandbox Code Playgroud)
但我得到了
A value is a
B value is
Run Code Online (Sandbox Code Playgroud)
我的问题是:如果对象是单身,那么为什么如果我把它放入Trait然后它表现得像普通对象?
Pet*_*itz 20
它不是一个全局单例,它是一个单例,指的是特征的实例(可以有几个实例).它取决于您定义单例的位置:如果在包中定义,那么它是关于包的单例,包也是单例,因此对象是单例.你看,它取决于你将一些东西定义为单身的上下文.如果上下文是单例,那么也是定义的对象.
| 归档时间: |
|
| 查看次数: |
3140 次 |
| 最近记录: |