Scala 为什么这个公共字段有一个私有标志?
我正在编写一个Scala宏,并遍历树以查找类中的非私有字段 考虑宏查看的以下代码:Scala 为什么这个公共字段有一个私有标志?,scala,scala-macros,scala-reflect,scala-macro-paradise,Scala,Scala Macros,Scala Reflect,Scala Macro Paradise,我正在编写一个Scala宏,并遍历树以查找类中的非私有字段 考虑宏查看的以下代码: class Foo { val bar: String = "test" } 我正在遍历这段代码,进入bar的ValDef。它的修饰符中只有两个标志:Flag.PRIVATE和Flag.LOCAL 使用栏上的private修饰符不会更改任何内容。使用protected修饰符只能将Flag.protected添加到标志列表中 我错过了什么?我如何区分私人领域和公共领域 编辑: 以下代码: val bar: S
class Foo {
val bar: String = "test"
}
我正在遍历这段代码,进入bar
的ValDef
。它的修饰符中只有两个标志:Flag.PRIVATE
和Flag.LOCAL
使用栏上的private
修饰符不会更改任何内容。使用protected
修饰符只能将Flag.protected
添加到标志列表中
我错过了什么?我如何区分私人领域和公共领域
编辑:
以下代码:
val bar: String = "test"
既没有标志.PRIVATE
也没有标志.LOCAL
,这很有意义,因为它是一个“全局”公共val
我在其中工作的上下文正在为其编写一个新的wart,它在扩展宏时只需从上下文的宇宙中获取一个遍历器
,并遍历代码块。Scala中的val
定义扩展为一个带有额外getter的private[this]
字段。除了您看到的ValDef
之外,还应该有一个与字段上的getter同名的def
方法定义。您可以共享您的代码以便我们可以使用它吗?如果您愿意,我可以创建一个repo,但我使用的代码只是从universe中获取一个遍历器,并在宏扩展期间在代码上运行它。@Dici我为问题添加了更多信息和上下文。嗯