Packages

  • package root

    This is the documentation for the Scala standard library.

    This is the documentation for the Scala standard library.

    Package structure

    The scala package contains core types like Int, Float, Array or Option which are accessible in all Scala compilation units without explicit qualification or imports.

    Notable packages include:

    Other packages exist. See the complete list on the right.

    Additional parts of the standard library are shipped as separate libraries. These include:

    • scala.reflect - Scala's reflection API (scala-reflect.jar)
    • scala.xml - XML parsing, manipulation, and serialization (scala-xml.jar)
    • scala.collection.parallel - Parallel collections (scala-parallel-collections.jar)
    • scala.util.parsing - Parser combinators (scala-parser-combinators.jar)
    • scala.swing - A convenient wrapper around Java's GUI framework called Swing (scala-swing.jar)

    Automatic imports

    Identifiers in the scala package and the scala.Predef object are always in scope by default.

    Some of these identifiers are type aliases provided as shortcuts to commonly used classes. For example, List is an alias for scala.collection.immutable.List.

    Other aliases refer to classes provided by the underlying platform. For example, on the JVM, String is an alias for java.lang.String.

    Definition Classes
    root
  • package scala

    Core Scala types.

    Core Scala types. They are always available without an explicit import.

    Definition Classes
    root
  • object language

    The scala.language object controls the language features available to the programmer, as proposed in the SIP-18 document.

    The scala.language object controls the language features available to the programmer, as proposed in the SIP-18 document.

    Each of these features has to be explicitly imported into the current scope to become available:

    import language.postfixOps // or language._
    List(1, 2, 3) reverse

    The language features are:

    Definition Classes
    scala
  • experimental
o

scala.language

experimental

object experimental

The experimental object contains features that are known to have unstable API or behavior that may change in future releases.

Experimental features may undergo API changes in future releases, so production code should not rely on them.

Programmers are encouraged to try out experimental features and report any bugs or API inconsistencies they encounter so they can be improved in future releases.

Source
language.scala
Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. experimental
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Value Members

  1. implicit lazy val macros: macros

    Only where this feature is enabled, are macro definitions allowed.

    Only where this feature is enabled, are macro definitions allowed. If macros is not enabled, macro definitions are rejected by the compiler.

    Macro implementations and macro applications are not governed by this language feature; they can be used anywhere.

    Why introduce the feature? Macros promise to make the language more regular, replacing ad-hoc language constructs with a general powerful abstraction capability that can express them. Macros are also a more disciplined and powerful replacement for compiler plugins.

    Why control it? For their very power, macros can lead to code that is hard to debug and understand.