Я хочу рассчитать имя пакета для класса Scala.Scala reflection получить имя пакета
ниже код работает, но кажется немного многословный
def packagename(cls:ru.ClassSymbol):String = {
def innerPackageName(cls:JavaUniverse#Symbol):List[JavaUniverse#Name] = {
if(cls.owner != null && cls.owner.isPackage ) {
List(cls.name) ::: innerPackageName(cls.owner)
}
else {
List(cls.name)
}
}
val owner: JavaUniverse#Symbol = cls.owner
innerPackageName(owner).filterNot{_.toString == "<root>"}.reverse.mkString(":")
}
Есть ли лучший способ сделать это?
Спасибо за обратную связь –
Один вопрос, как я могу получить 'TermName', похоже, хранится в scala.reflect.internal (я на scala 2.10.3) –
Чтобы его скомпилировать, я переписал его так: https://gist.github.com/picsolvebryan/8707151 –