Спасибо за ответы, пока! Позвольте мне добавить две маленькие точки, и мы сделали!
Видимость
Разница между вложенными и неопубликованными пакетами относится только к области видимости. Видимость всегда основана на вложенных пакетах.
package A
private[A] trait Secret
Это работает:
package A
package B
trait AB extends Secret
Так же это:
package A.B
trait AB extends A.Secret
В обоих случаях структура интерпретируется как:
package A {
trait Secret
package B {
//...
}
}
Scoping
Сравните это с scoping , в котором вы можете представить эту интерпретацию для неопубликованных пакетов:
package A {
private [A] trait Secret
}
package `A.B` {
trait AB extends A.Secret
}
смешивать и сочетать
Вы можете произвольно смешивать и сочетать вложенные и ненестированные пакеты:
package com.acme.project
package util.shazam
package blerg