2015-11-10 1 views
1

Я использую scala 2.11.0Почему я могу использовать StringBuilder, явно не импортируя его в scala?

Я замечаю, что StringBuilder определен в scala.collection.mutable.StringBuilder и java.lang.StringBuilder. Я также заметил, что scala неявно импортирует java.lang. , scala., scala.Predef._

Почему я использую scala.collection.mutable.StringBuilder и не java.lang.StringBuilder, когда я пишу

val def = new StringBuilder 

благодаря

ответ

3

Вы можете проверить, что импорт с помощью Scala, глядя в package.scala

линий 74- 45 импортирует StringBuilder на

type StringBuilder = scala.collection.mutable.StringBuilder 
val StringBuilder = scala.collection.mutable.StringBuilder 
+0

спасибо, я забыл проверить объект упаковки – waitinfuture

2

Ну, потому что все here доступен по умолчанию. то есть scala._ по умолчанию.

В этом пакете объект, который вы можете увидеть:

type StringBuilder = scala.collection.mutable.StringBuilder 

Это почему делает new StringBuilder принимает scala.collection.mutable.StringBuilder и не java.lang.StringBuilder

0

Scala использует псевдонимы типов, чтобы обеспечить доступность основных типов scala без импорта.

https://github.com/scala/scala/blob/27da46343cd545534819300235bc64ab74958c92/src/library/scala/package.scala#L74 приведет вас к объявлению псевдонима типа.

Эта ссылка также поможет - Understanding what 'type' keyword does in Scala

Обратите внимание, что с момента объявления типа псевдонима в объекте пакета Scala и scala._ импортируется неявно, это принести декларацию типа псевдонима в рамки для каждой единицы компиляции ,

 Смежные вопросы

  • Нет связанных вопросов^_^