【发布时间】:2012-01-31 12:00:13
【问题描述】:
我想做这样的事情(示例被简化,但包含所有关键部分):
class Master
{
type DataType = Int
var counter : DataType = 0
}
class Slave(private val master : Master)
{
val counter = master.counter // (*)
}
这里 (*) 我得到错误:
私有值 master 将其定义范围作为类型的一部分进行了转义 从属.this.master.DataType
val counter = master.counter
我理解错误,但我不明白原因 - 类型是类 Master 的一部分,而不是对象 master,所以如果类是私有的,而不是对象,这一点很重要。好吧,至少在理论上是这样。
快速解决方法很容易:
val counter : Master#DataType = master.counter
但我相信这是与以前完全相同的代码的显式版本,它“只是”需要更多的输入。那么这是一个功能吗?
问题:
一个类型(这里是 DataType)可以依赖于对象,而不是 Scala 中的类(即类的每个实例的类型定义)吗?
【问题讨论】:
标签: scala scope access-modifiers