Packages

o

scala

Predef

object Predef extends LowPriorityImplicits with DeprecatedPredef

The Predef object provides definitions that are accessible in all Scala compilation units without explicit qualification.

Commonly Used Types

Predef provides type aliases for types which are commonly used, such as the immutable collection types scala.collection.immutable.Map, scala.collection.immutable.Set, and the scala.collection.immutable.List constructors (scala.collection.immutable.:: and scala.collection.immutable.Nil).

Console Output

For basic console output, Predef provides convenience methods print and println, which are aliases of the methods in the object scala.Console.

Assertions

A set of assert functions are provided for use as a way to document and dynamically check invariants in code. Invocations of assert can be elided at compile time by providing the command line option -Xdisable-assertions, which raises -Xelide-below above elidable.ASSERTION, to the scalac command.

Variants of assert intended for use with static analysis tools are also provided: assume, require and ensuring. require and ensuring are intended for use as a means of design-by-contract style specification of pre- and post-conditions on functions, with the intention that these specifications could be consumed by a static analysis tool. For instance,

def addNaturals(nats: List[Int]): Int = {
  require(nats forall (_ >= 0), "List contains negative numbers")
  nats.foldLeft(0)(_ + _)
} ensuring(_ >= 0)

The declaration of addNaturals states that the list of integers passed should only contain natural numbers (i.e. non-negative), and that the result returned will also be natural. require is distinct from assert in that if the condition fails, then the caller of the function is to blame rather than a logical error having been made within addNaturals itself. ensuring is a form of assert that declares the guarantee the function is providing with regards to its return value.

Implicit Conversions

A number of commonly applied implicit conversions are also defined here, and in the parent type scala.LowPriorityImplicits. Implicit conversions are provided for the "widening" of numeric values, for instance, converting a Short value to a Long value as required, and to add additional higher-order functions to Array values. These are described in more detail in the documentation of scala.Array.

Source
Predef.scala
Linear Supertypes
DeprecatedPredef, LowPriorityImplicits, AnyRef, Any
Ordering
  1. Grouped
  2. Alphabetic
  3. By Inheritance
Inherited
  1. Predef
  2. DeprecatedPredef
  3. LowPriorityImplicits
  4. AnyRef
  5. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Utility Methods

  1. def ???: Nothing

    ??? can be used for marking methods that remain to be implemented.

    ??? can be used for marking methods that remain to be implemented.

    Exceptions thrown
  2. def classOf[T]: Class[T]

    Retrieve the runtime representation of a class type.

    Retrieve the runtime representation of a class type. classOf[T] is equivalent to the class literal T.class in Java.

    Example:
    1. val listClass = classOf[List[_]]
      // listClass is java.lang.Class[List[_]] = class scala.collection.immutable.List
      
      val mapIntString = classOf[Map[Int,String]]
      // mapIntString is java.lang.Class[Map[Int,String]] = interface scala.collection.immutable.Map
  3. def identity[A](x: A): A

    Annotations
    @inline()
  4. def implicitly[T](implicit e: T): T

    Annotations
    @inline()
  5. def locally[T](x: T): T

    Annotations
    @inline()

Assertions

These methods support program verification and runtime correctness.

  1. final def assert(assertion: Boolean, message: ⇒ Any): Unit

    Tests an expression, throwing an AssertionError if false.

    Tests an expression, throwing an AssertionError if false. Calls to this method will not be generated if -Xelide-below is greater than ASSERTION.

    assertion

    the expression to test

    message

    a String to include in the failure message

    Annotations
    @elidable( level = ASSERTION ) @inline()
    See also

    elidable

  2. def assert(assertion: Boolean): Unit

    Tests an expression, throwing an AssertionError if false.

    Tests an expression, throwing an AssertionError if false. Calls to this method will not be generated if -Xelide-below is greater than ASSERTION.

    assertion

    the expression to test

    Annotations
    @elidable( level = ASSERTION )
    See also

    elidable

  3. final def assume(assumption: Boolean, message: ⇒ Any): Unit

    Tests an expression, throwing an AssertionError if false.

    Tests an expression, throwing an AssertionError if false. This method differs from assert only in the intent expressed: assert contains a predicate which needs to be proven, while assume contains an axiom for a static checker. Calls to this method will not be generated if -Xelide-below is greater than ASSERTION.

    assumption

    the expression to test

    message

    a String to include in the failure message

    Annotations
    @elidable( level = ASSERTION ) @inline()
    See also

    elidable

  4. def assume(assumption: Boolean): Unit

    Tests an expression, throwing an AssertionError if false.

    Tests an expression, throwing an AssertionError if false. This method differs from assert only in the intent expressed: assert contains a predicate which needs to be proven, while assume contains an axiom for a static checker. Calls to this method will not be generated if -Xelide-below is greater than ASSERTION.

    assumption

    the expression to test

    Annotations
    @elidable( level = ASSERTION )
    See also

    elidable

  5. final def require(requirement: Boolean, message: ⇒ Any): Unit

    Tests an expression, throwing an IllegalArgumentException if false.

    Tests an expression, throwing an IllegalArgumentException if false. This method is similar to assert, but blames the caller of the method for violating the condition.

    requirement

    the expression to test

    message

    a String to include in the failure message

    Annotations
    @inline()
  6. def require(requirement: Boolean): Unit

    Tests an expression, throwing an IllegalArgumentException if false.

    Tests an expression, throwing an IllegalArgumentException if false. This method is similar to assert, but blames the caller of the method for violating the condition.

    requirement

    the expression to test

Console Output

These methods provide output via the console.

  1. def print(x: Any): Unit

    Prints an object to out using its toString method.

    Prints an object to out using its toString method.

    x

    the object to print; may be null.

  2. def printf(text: String, xs: Any*): Unit

    Prints its arguments as a formatted string to the default output, based on a string pattern (in a fashion similar to printf in C).

    Prints its arguments as a formatted string to the default output, based on a string pattern (in a fashion similar to printf in C).

    The interpretation of the formatting patterns is described in java.util.Formatter.

    Consider using the f interpolator as more type safe and idiomatic.

    text

    the pattern for formatting the arguments.

    Exceptions thrown

    java.lang.IllegalArgumentException if there was a problem with the format string or arguments

    See also

    StringContext.f

  3. def println(x: Any): Unit

    Prints out an object to the default output, followed by a newline character.

    Prints out an object to the default output, followed by a newline character.

    x

    the object to print.

  4. def println(): Unit

    Prints a newline character on the default output.

Type Constraints

These entities allows constraints between types to be stipulated.

  1. sealed abstract class <:<[-From, +To] extends (From) ⇒ To with Serializable

    An instance of A <:< B witnesses that A is a subtype of B.

    An instance of A <:< B witnesses that A is a subtype of B. Requiring an implicit argument of the type A <:< B encodes the generalized constraint A <: B.

    Annotations
    @implicitNotFound( msg = ... )
    Note

    we need a new type constructor <:< and evidence conforms, as reusing Function1 and identity leads to ambiguities in case of type errors (any2stringadd is inferred) To constrain any abstract type T that's in scope in a method's argument list (not just the method's own type parameters) simply add an implicit argument of type T <:< U, where U is the required upper bound; or for lower-bounds, use: L <:< T, where L is the required lower bound. In part contributed by Jason Zaugg.

  2. sealed abstract class =:=[From, To] extends (From) ⇒ To with Serializable

    An instance of A =:= B witnesses that the types A and B are equal.

    An instance of A =:= B witnesses that the types A and B are equal.

    Annotations
    @implicitNotFound( msg = ... )
    See also

    <:< for expressing subtyping constraints

  1. implicit def $conforms[A]: <:<[A, A]

  2. object =:= extends Serializable

Aliases

These aliases bring selected immutable types into scope without any imports.

  1. type Class[T] = java.lang.Class[T]

  2. type Function[-A, +B] = (A) ⇒ B

  3. type Map[A, +B] = collection.immutable.Map[A, B]

  4. type Set[A] = collection.immutable.Set[A]

  5. type String = java.lang.String

    The String type in Scala has methods that come either from the underlying Java String (see the documentation corresponding to your Java version, for example http://docs.oracle.com/javase/8/docs/api/java/lang/String.html) or are added implicitly through scala.collection.immutable.StringOps.

String Conversions

Conversions to and from String and StringOps.

  1. implicit def augmentString(x: String): StringOps

    Annotations
    @inline()
  2. implicit def unaugmentString(x: StringOps): String

    Annotations
    @inline()
  3. implicit def unwrapString(ws: WrappedString): String

    Definition Classes
    LowPriorityImplicits
  4. implicit def wrapString(s: String): WrappedString

    Definition Classes
    LowPriorityImplicits

Implicit Classes

These implicit classes add useful extension methods to every type.

  1. implicit final class ArrowAssoc[A] extends AnyVal

  2. implicit final class Ensuring[A] extends AnyVal

  3. implicit final class StringFormat[A] extends AnyVal

  4. implicit final class any2stringadd[A] extends AnyVal

CharSequence Wrappers

Wrappers that implements CharSequence and were implicit classes.

  1. final class SeqCharSequence extends CharSequence

  2. final class ArrayCharSequence extends CharSequence

    Annotations
    @deprecated
    Deprecated

    (Since version 2.12.13) use java.nio.CharBuffer.wrap instead

  1. def ArrayCharSequence(arrayOfChars: Array[Char]): ArrayCharSequence

  2. def SeqCharSequence(sequenceOfChars: collection.IndexedSeq[Char]): SeqCharSequence

Java to Scala

Implicit conversion from Java primitive wrapper types to Scala equivalents.

  1. implicit def Boolean2boolean(x: java.lang.Boolean): Boolean

  2. implicit def Byte2byte(x: java.lang.Byte): Byte

  3. implicit def Character2char(x: Character): Char

  4. implicit def Double2double(x: java.lang.Double): Double

  5. implicit def Float2float(x: java.lang.Float): Float

  6. implicit def Integer2int(x: Integer): Int

  7. implicit def Long2long(x: java.lang.Long): Long

  8. implicit def Short2short(x: java.lang.Short): Short

Scala to Java

Implicit conversion from Scala AnyVals to Java primitive wrapper types equivalents.

  1. implicit def boolean2Boolean(x: Boolean): java.lang.Boolean

  2. implicit def byte2Byte(x: Byte): java.lang.Byte

  3. implicit def char2Character(x: Char): Character

  4. implicit def double2Double(x: Double): java.lang.Double

  5. implicit def float2Float(x: Float): java.lang.Float

  6. implicit def int2Integer(x: Int): Integer

  7. implicit def long2Long(x: Long): java.lang.Long

  8. implicit def short2Short(x: Short): java.lang.Short

Array to WrappedArray

Conversions from Arrays to WrappedArrays.

  1. implicit def genericWrapArray[T](xs: Array[T]): WrappedArray[T]

    Definition Classes
    LowPriorityImplicits
  2. implicit def wrapBooleanArray(xs: Array[Boolean]): WrappedArray[Boolean]

    Definition Classes
    LowPriorityImplicits
  3. implicit def wrapByteArray(xs: Array[Byte]): WrappedArray[Byte]

    Definition Classes
    LowPriorityImplicits
  4. implicit def wrapCharArray(xs: Array[Char]): WrappedArray[Char]

    Definition Classes
    LowPriorityImplicits
  5. implicit def wrapDoubleArray(xs: Array[Double]): WrappedArray[Double]

    Definition Classes
    LowPriorityImplicits
  6. implicit def wrapFloatArray(xs: Array[Float]): WrappedArray[Float]

    Definition Classes
    LowPriorityImplicits
  7. implicit def wrapIntArray(xs: Array[Int]): WrappedArray[Int]

    Definition Classes
    LowPriorityImplicits
  8. implicit def wrapLongArray(xs: Array[Long]): WrappedArray[Long]

    Definition Classes
    LowPriorityImplicits
  9. implicit def wrapRefArray[T <: AnyRef](xs: Array[T]): WrappedArray[T]

    Definition Classes
    LowPriorityImplicits
  10. implicit def wrapShortArray(xs: Array[Short]): WrappedArray[Short]

    Definition Classes
    LowPriorityImplicits
  11. implicit def wrapUnitArray(xs: Array[Unit]): WrappedArray[Unit]

    Definition Classes
    LowPriorityImplicits

Ungrouped

  1. class DummyImplicit extends AnyRef

    A type for which there is always an implicit value.

    A type for which there is always an implicit value.

    See also

    scala.Array$, method fallbackCanBuildFrom

  2. type Manifest[T] = reflect.Manifest[T]
    Annotations
    @implicitNotFound( msg = "No Manifest available for ${T}." )
  3. type OptManifest[T] = reflect.OptManifest[T]
  4. implicit final class RichException extends AnyVal
  5. type ClassManifest[T] = ClassTag[T]
    Annotations
    @implicitNotFound( msg = ... ) @deprecated
    Deprecated

    (Since version 2.10.0) use scala.reflect.ClassTag instead

  6. type Pair[+A, +B] = (A, B)
    Annotations
    @deprecated
    Deprecated

    (Since version 2.11.0) use built-in tuple syntax or Tuple2 instead

  7. type Triple[+A, +B, +C] = (A, B, C)
    Annotations
    @deprecated
    Deprecated

    (Since version 2.11.0) use built-in tuple syntax or Tuple3 instead

  1. val Manifest: ManifestFactory.type
  2. val NoManifest: reflect.NoManifest.type
  3. implicit val StringCanBuildFrom: CanBuildFrom[String, Char, String]
  4. implicit def booleanArrayOps(xs: Array[Boolean]): ofBoolean
  5. implicit def booleanWrapper(x: Boolean): RichBoolean
    Definition Classes
    LowPriorityImplicits
    Annotations
    @inline()
  6. implicit def byteArrayOps(xs: Array[Byte]): ofByte
  7. implicit def byteWrapper(x: Byte): RichByte

    We prefer the java.lang.* boxed types to these wrappers in any potential conflicts.

    We prefer the java.lang.* boxed types to these wrappers in any potential conflicts. Conflicts do exist because the wrappers need to implement ScalaNumber in order to have a symmetric equals method, but that implies implementing java.lang.Number as well.

    Note - these are inlined because they are value classes, but the call to xxxWrapper is not eliminated even though it does nothing. Even inlined, every call site does a no-op retrieval of Predef's MODULE$ because maybe loading Predef has side effects!

    Definition Classes
    LowPriorityImplicits
    Annotations
    @inline()
  8. implicit def charArrayOps(xs: Array[Char]): ofChar
  9. implicit def charWrapper(c: Char): RichChar
    Definition Classes
    LowPriorityImplicits
    Annotations
    @inline()
  10. implicit def doubleArrayOps(xs: Array[Double]): ofDouble
  11. implicit def doubleWrapper(x: Double): RichDouble
    Definition Classes
    LowPriorityImplicits
    Annotations
    @inline()
  12. implicit def fallbackStringCanBuildFrom[T]: CanBuildFrom[String, T, collection.immutable.IndexedSeq[T]]
    Definition Classes
    LowPriorityImplicits
  13. implicit def floatArrayOps(xs: Array[Float]): ofFloat
  14. implicit def floatWrapper(x: Float): RichFloat
    Definition Classes
    LowPriorityImplicits
    Annotations
    @inline()
  15. implicit def genericArrayOps[T](xs: Array[T]): ArrayOps[T]
  16. implicit def intArrayOps(xs: Array[Int]): ofInt
  17. implicit def intWrapper(x: Int): RichInt
    Definition Classes
    LowPriorityImplicits
    Annotations
    @inline()
  18. implicit def longArrayOps(xs: Array[Long]): ofLong
  19. implicit def longWrapper(x: Long): RichLong
    Definition Classes
    LowPriorityImplicits
    Annotations
    @inline()
  20. def manifest[T](implicit m: Manifest[T]): Manifest[T]
  21. def optManifest[T](implicit m: OptManifest[T]): OptManifest[T]
  22. implicit def refArrayOps[T <: AnyRef](xs: Array[T]): ofRef[T]
  23. implicit def shortArrayOps(xs: Array[Short]): ofShort
  24. implicit def shortWrapper(x: Short): RichShort
    Definition Classes
    LowPriorityImplicits
    Annotations
    @inline()
  25. implicit def tuple2ToZippedOps[T1, T2](x: (T1, T2)): Ops[T1, T2]
  26. implicit def tuple3ToZippedOps[T1, T2, T3](x: (T1, T2, T3)): Ops[T1, T2, T3]
  27. implicit def unitArrayOps(xs: Array[Unit]): ofUnit
  28. object DummyImplicit
  29. val ClassManifest: ClassManifestFactory.type
    Annotations
    @deprecated
    Deprecated

    (Since version 2.10.0) use scala.reflect.ClassTag instead

  30. def any2ArrowAssoc[A](x: A): ArrowAssoc[A]
    Definition Classes
    DeprecatedPredef
    Annotations
    @deprecated
    Deprecated

    (Since version 2.11.0) use ArrowAssoc

  31. def any2Ensuring[A](x: A): Ensuring[A]
    Definition Classes
    DeprecatedPredef
    Annotations
    @deprecated
    Deprecated

    (Since version 2.11.0) use Ensuring

  32. def any2stringfmt(x: Any): StringFormat[Any]
    Definition Classes
    DeprecatedPredef
    Annotations
    @deprecated
    Deprecated

    (Since version 2.11.0) use StringFormat

  33. def arrayToCharSequence(xs: Array[Char]): CharSequence
    Definition Classes
    DeprecatedPredef
    Annotations
    @deprecated
    Deprecated

    (Since version 2.11.0) use java.nio.CharBuffer.wrap

  34. def classManifest[T](implicit m: ClassManifest[T]): ClassManifest[T]
    Annotations
    @deprecated
    Deprecated

    (Since version 2.10.0) use scala.reflect.classTag[T] instead

  35. def conforms[A]: <:<[A, A]
    Annotations
    @deprecated
    Deprecated

    (Since version 2.11.0) use implicitly[T <:< U] or identity instead.

  36. def exceptionWrapper(exc: scala.Throwable): RichException
    Definition Classes
    DeprecatedPredef
    Annotations
    @deprecated
    Deprecated

    (Since version 2.11.0) use Throwable directly

  37. def readBoolean(): Boolean
    Definition Classes
    DeprecatedPredef
    Annotations
    @deprecated
    Deprecated

    (Since version 2.11.0) use the method in scala.io.StdIn

  38. def readByte(): Byte
    Definition Classes
    DeprecatedPredef
    Annotations
    @deprecated
    Deprecated

    (Since version 2.11.0) use the method in scala.io.StdIn

  39. def readChar(): Char
    Definition Classes
    DeprecatedPredef
    Annotations
    @deprecated
    Deprecated

    (Since version 2.11.0) use the method in scala.io.StdIn

  40. def readDouble(): Double
    Definition Classes
    DeprecatedPredef
    Annotations
    @deprecated
    Deprecated

    (Since version 2.11.0) use the method in scala.io.StdIn

  41. def readFloat(): Float
    Definition Classes
    DeprecatedPredef
    Annotations
    @deprecated
    Deprecated

    (Since version 2.11.0) use the method in scala.io.StdIn

  42. def readInt(): Int
    Definition Classes
    DeprecatedPredef
    Annotations
    @deprecated
    Deprecated

    (Since version 2.11.0) use the method in scala.io.StdIn

  43. def readLine(text: String, args: Any*): String
    Definition Classes
    DeprecatedPredef
    Annotations
    @deprecated
    Deprecated

    (Since version 2.11.0) use the method in scala.io.StdIn

  44. def readLine(): String
    Definition Classes
    DeprecatedPredef
    Annotations
    @deprecated
    Deprecated

    (Since version 2.11.0) use the method in scala.io.StdIn

  45. def readLong(): Long
    Definition Classes
    DeprecatedPredef
    Annotations
    @deprecated
    Deprecated

    (Since version 2.11.0) use the method in scala.io.StdIn

  46. def readShort(): Short
    Definition Classes
    DeprecatedPredef
    Annotations
    @deprecated
    Deprecated

    (Since version 2.11.0) use the method in scala.io.StdIn

  47. def readf(format: String): List[Any]
    Definition Classes
    DeprecatedPredef
    Annotations
    @deprecated
    Deprecated

    (Since version 2.11.0) use the method in scala.io.StdIn

  48. def readf1(format: String): Any
    Definition Classes
    DeprecatedPredef
    Annotations
    @deprecated
    Deprecated

    (Since version 2.11.0) use the method in scala.io.StdIn

  49. def readf2(format: String): (Any, Any)
    Definition Classes
    DeprecatedPredef
    Annotations
    @deprecated
    Deprecated

    (Since version 2.11.0) use the method in scala.io.StdIn

  50. def readf3(format: String): (Any, Any, Any)
    Definition Classes
    DeprecatedPredef
    Annotations
    @deprecated
    Deprecated

    (Since version 2.11.0) use the method in scala.io.StdIn

  51. def seqToCharSequence(xs: collection.IndexedSeq[Char]): CharSequence
    Definition Classes
    DeprecatedPredef
    Annotations
    @deprecated
    Deprecated

    (Since version 2.11.0) use SeqCharSequence

  52. object Pair
    Annotations
    @deprecated
    Deprecated

    (Since version 2.11.0) use built-in tuple syntax or Tuple2 instead

  53. object Triple
    Annotations
    @deprecated
    Deprecated

    (Since version 2.11.0) use built-in tuple syntax or Tuple3 instead