Сколько раз пакет будет импортирован при импорте внутри функции в Scala

#scala #import

#scala #импорт

Вопрос:

Ниже приведен фрагмент кода функции в Scala:

 def sqrtplus1(x: Int) = {
  import scala.math.sqrt
  sqrt(x)   1.0
}
  

И я делаю следующие 3 вызова вышеупомянутой функции:

 sqrtplus1(5) // outputs 26
sqrtplus1(6) // outputs 37
sqrtplus1(7) // outputs 50
  

В то время как вышеописанное работает нормально,

Однако я хотел бы знать, сколько раз пакет scala.math.sqrt будет импортирован при вызове sqrtplus1 функции 3 раз? Спасибо!

Ответ №1:

Этот ответ от @Rob Norris @tpolecat из scala / center (сообщество):

Все, что делает импорт, это позволяет ссылаться на символы без префикса. В той степени, в какой это вообще «происходит», это полностью происходит во время компиляции. Операторы импорта не имеют представления во время выполнения.

(В отличие, например, от Python, где импорт — это оператор, который может привести к тому, что что-то произойдет.)