В 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
}
}
}
Тогда
class SimpleClass extends SimpleTrait{
/// empty impl
}
и
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());
}
}
Хотелось бы увидеть
A value is a
B value is a
но я получил
A value is a
B value is
Мой вопрос:
Если объект одноэлементный, то почему, если я помещаю его в Trait, он ведет себя как обычный объект?