В 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, он будет вести себя как обычный объект?
InnerTraitObject
за пределыSimpleTrait
, вы получите желаемое поведение. Но это не ответ на ваш вопрос. - person michael.kebe   schedule 04.05.2011