Ответ 1
В Scala, import
лексически ограничены. Идентификаторы import
ed видны только в области, в которой они были import
ed.
В первом случае область - это файл, поэтому import
будет отображаться во всем файле, но не в других файлах. Во втором случае область видимости - это класс, поэтому import
будет отображаться во всем классе, но не в других классах даже в одном файле (кроме классов курса, вложенных в MyClass
).
Вы также можете ограничить область import
только одним методом даже одним блоком (!)
class Foo {
def bar {
// do something
{
import baz.quux.Frotz
// use Frotz
}
// Frotz not visible here
}
}
Это хороший пример Scala регулярности, ортогональности и простоты. Например. в Java блоки создают области для локальных переменных, но не для import
(или методов или чего-либо еще). В Scala блоки создают области. Период. Никаких исключений, никаких угловых случаев.
import
находится между фигурными фигурными скобками, ergo видна только между фигурными фигурными скобками. Он просто делает то, что вы ожидаете.