加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala对象在特征之内

发布时间:2020-12-16 19:04:46 所属栏目:安全 来源:网络整理
导读:在 Scala对象是单身…所以如果我做: trait SimpleTrait { def setString(s: String): Unit = { InnerTraitObject setString s } def getString(): String = { return InnerTraitObject getString } object InnerTraitObject { var str: String = "" def set
在 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

我的问题是:
如果对象是单身,那么为什么如果我把它变成特征,那么它的行为就像普通对象?

解决方法

这不是一个全球性的单身,它是一个单例,指的是特征的实例(可以有几个实例).这取决于你在哪里定义单例:如果在一个包中定义,那么它是关于包的单例,包是单例,所以对象是单例.你看,这取决于你定义一个单身人士的上下文.如果上下文是单例,那么定义的对象也是.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读