object Console extends AnsiColor
Implements functionality for printing Scala values on the terminal. For reading values use StdIn. Also defines constants for marking up text on ANSI terminals.
Console Output
Use the print methods to output text.
scala> Console.printf( "Today the outside temperature is a balmy %.1f°C. %<.1f°C beats the previous record of %.1f°C.\n", -137.0, -135.05) Today the outside temperature is a balmy -137.0°C. -137.0°C beats the previous record of -135.1°C.
ANSI escape codes
Use the ANSI escape codes for colorizing console output either to STDOUT or STDERR.
import Console.{GREEN, RED, RESET, YELLOW_B, UNDERLINED} object PrimeTest { def isPrime(): Unit = { val candidate = io.StdIn.readInt().ensuring(_ > 1) val prime = (2 to candidate - 1).forall(candidate % _ != 0) if (prime) Console.println(s"${RESET}${GREEN}yes${RESET}") else Console.err.println(s"${RESET}${YELLOW_B}${RED}${UNDERLINED}NO!${RESET}") } def main(args: Array[String]): Unit = isPrime() }
$ scala PrimeTest |
1234567891 |
yes |
$ scala PrimeTest |
56474 |
NO! |
IO redefinition
Use IO redefinition to temporarily swap in a different set of input and/or output streams. In this example the stream based method above is wrapped into a function.
import java.io.{ByteArrayOutputStream, StringReader} object FunctionalPrimeTest { def isPrime(candidate: Int): Boolean = { val input = new StringReader(s"$candidate\n") val outCapture = new ByteArrayOutputStream val errCapture = new ByteArrayOutputStream Console.withIn(input) { Console.withOut(outCapture) { Console.withErr(errCapture) { PrimeTest.isPrime() } } } if (outCapture.toByteArray.nonEmpty) // "yes" true else if (errCapture.toByteArray.nonEmpty) // "NO!" false else throw new IllegalArgumentException(candidate.toString) } def main(args: Array[String]): Unit = { val primes = (2 to 50) filter (isPrime) println(s"First primes: $primes") } }
$ scala FunctionalPrimeTest |
First primes: Vector(2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47) |
- Source
- Console.scala
- Grouped
- Alphabetic
- By Inheritance
- Console
- AnsiColor
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Console Output
These methods provide output via the console.
- def flush(): Unit
Flushes the output stream.
Flushes the output stream. This function is required when partial output (i.e. output not terminated by a newline character) has to be made visible on the terminal.
- def print(obj: Any): Unit
Prints an object to
out
using itstoString
method.Prints an object to
out
using itstoString
method.- obj
the object to print; may be null.
- def printf(text: String, args: 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.
- text
the pattern for formatting the arguments.
- args
the arguments used to instantiating the pattern.
- Exceptions thrown
java.lang.IllegalArgumentException
if there was a problem with the format string or arguments
- 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.
- def println(): Unit
Prints a newline character on the default output.
IO Defaults
These values provide direct access to the standard IO channels
- def err: PrintStream
The default error, can be overridden by
withErr
- def in: BufferedReader
The default input, can be overridden by
withIn
- def out: PrintStream
The default output, can be overridden by
withOut
IO Redefinition
These methods allow substituting alternative streams for the duration of a body of code. Threadsafe by virtue of scala.util.DynamicVariable.
- def withErr[T](err: OutputStream)(thunk: => T): T
Sets the default error stream for the duration of execution of one thunk.
Sets the default error stream for the duration of execution of one thunk.
- err
the new error stream.
- thunk
the code to execute with the new error stream active
- returns
the results of
thunk
- See also
withErr[T](err:PrintStream)(thunk: => T)
- def withErr[T](err: PrintStream)(thunk: => T): T
Set the default error stream for the duration of execution of one thunk.
Set the default error stream for the duration of execution of one thunk.
- err
the new error stream.
- thunk
the code to execute with the new error stream active
- returns
the results of
thunk
withErr(Console.out) { err.println("This goes to default _out_") }
- See also
withErr[T](err:OutputStream)(thunk: => T)
Example: - def withIn[T](in: InputStream)(thunk: => T): T
Sets the default input stream for the duration of execution of one thunk.
Sets the default input stream for the duration of execution of one thunk.
- in
the new input stream.
- thunk
the code to execute with the new input stream active
- returns
the results of
thunk
- See also
withIn[T](reader:Reader)(thunk: => T)
- def withIn[T](reader: Reader)(thunk: => T): T
Sets the default input stream for the duration of execution of one thunk.
Sets the default input stream for the duration of execution of one thunk.
- thunk
the code to execute with the new input stream active
- returns
the results of
thunk
val someFile:Reader = openFile("file.txt") withIn(someFile) { // Reads a line from file.txt instead of default input println(readLine) }
- See also
withIn[T](in:InputStream)(thunk: => T)
Example: - def withOut[T](out: OutputStream)(thunk: => T): T
Sets the default output stream for the duration of execution of one thunk.
Sets the default output stream for the duration of execution of one thunk.
- out
the new output stream.
- thunk
the code to execute with the new output stream active
- returns
the results of
thunk
- See also
withOut[T](out:PrintStream)(thunk: => T)
- def withOut[T](out: PrintStream)(thunk: => T): T
Sets the default output stream for the duration of execution of one thunk.
Sets the default output stream for the duration of execution of one thunk.
- out
the new output stream.
- thunk
the code to execute with the new output stream active
- returns
the results of
thunk
withOut(Console.err) { println("This goes to default _error_") }
- See also
withOut[T](out:OutputStream)(thunk: => T)
Example:
ANSI Style and Control Codes
- final val BLINK: String("\u001B[5m")
ANSI blink
ANSI blink
- Definition Classes
- AnsiColor
- final val BOLD: String("\u001B[1m")
ANSI bold
ANSI bold
- Definition Classes
- AnsiColor
- final val INVISIBLE: String("\u001B[8m")
ANSI invisible
ANSI invisible
- Definition Classes
- AnsiColor
- final val RESET: String("\u001B[0m")
Reset ANSI styles
Reset ANSI styles
- Definition Classes
- AnsiColor
- final val REVERSED: String("\u001B[7m")
ANSI reversed
ANSI reversed
- Definition Classes
- AnsiColor
- final val UNDERLINED: String("\u001B[4m")
ANSI underlines
ANSI underlines
- Definition Classes
- AnsiColor
This is the documentation for the Scala standard library.
Package structure
The scala package contains core types like
Int
,Float
,Array
orOption
which are accessible in all Scala compilation units without explicit qualification or imports.Notable packages include:
scala.collection
and its sub-packages contain Scala's collections frameworkscala.collection.immutable
- Immutable, sequential data-structures such asVector
,List
,Range
,HashMap
orHashSet
scala.collection.mutable
- Mutable, sequential data-structures such asArrayBuffer
,StringBuilder
,HashMap
orHashSet
scala.collection.concurrent
- Mutable, concurrent data-structures such asTrieMap
scala.concurrent
- Primitives for concurrent programming such asFutures
andPromises
scala.io
- Input and output operationsscala.math
- Basic math functions and additional numeric types likeBigInt
andBigDecimal
scala.sys
- Interaction with other processes and the operating systemscala.util.matching
- Regular expressionsOther 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 forscala.collection.immutable.List
.Other aliases refer to classes provided by the underlying platform. For example, on the JVM,
String
is an alias forjava.lang.String
.