【问题标题】:Scala: what is the difference between "private class" and "private[this] class" for top level classes?Scala:顶级课程的“私人课程”和“私人[这个]课程”有什么区别?
【发布时间】:2018-04-22 14:53:58
【问题描述】:

我知道private[this] 在方法或类变量的上下文中是什么意思,但它在顶级类的上下文中是什么意思?是不是和private[package]一样,用this关键字代替当前包名?

【问题讨论】:

  • 是的,请查看此处了解更多详情:stackoverflow.com/questions/9698677/privatethis-vs-private
  • 我看到了,但除非我遗漏了什么,否则没有提到顶级类的语义。在这种情况下,没有“实例”是私有的(除非包是一个实例,但我从来不知道包是 Scala 中的第一级对象)。
  • 哈!我认为它可能与包装解释脚本的合成对象有关,但实际上,程序private[this] class PrivateThisscalac 一起编译,而不仅仅是作为脚本。这很有趣。

标签: scala


【解决方案1】:
class Stock{
 private var price: Double
 def isHigh(that: Stock): Boolean =  this.price > that.price
}

这里是外部对象访问私有价格变量但是如果我们定义

private[this] var price: Double

这样就不能访问价格

【讨论】:

  • 我问的是private[this] 班级,而不是班级成员。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-15
  • 2012-08-15
  • 2020-06-20
  • 1970-01-01
  • 1970-01-01
  • 2011-07-19
相关资源
最近更新 更多