Console (original) (raw)

scala.Console

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)

Attributes

Source

Console.scala

Graph

Supertypes

Self type

Members list

Console Output

These methods provide output via the console.

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.

Attributes

Source

Console.scala

Prints an object to out using its toString method.

Prints an object to out using its toString method.

Value parameters

obj

the object to print; may be null.

Attributes

Source

Console.scala

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.

Value parameters

args

the arguments used to instantiating the pattern.

text

the pattern for formatting the arguments.

Attributes

Throws

Source

Console.scala

Prints a newline character on the default output.

Prints a newline character on the default output.

Attributes

Source

Console.scala

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.

Value parameters

x

the object to print.

Attributes

Source

Console.scala

IO Defaults

These values provide direct access to the standard IO channels

The default error, can be overridden by withErr

The default error, can be overridden by withErr

Attributes

Source

Console.scala

The default input, can be overridden by withIn

The default input, can be overridden by withIn

Attributes

Source

Console.scala

The default output, can be overridden by withOut

The default output, can be overridden by withOut

Attributes

Source

Console.scala

IO Redefinition

These methods allow substituting alternative streams for the duration of a body of code. Threadsafe by virtue of scala.util.DynamicVariable.

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.

Value parameters

err

the new error stream.

thunk

the code to execute with the new error stream active

Attributes

Returns

the results of thunk

See also

withErr[T](err:OutputStream)(thunk: => T)

Example

withErr(Console.out) { err.println("This goes to default _out_") }

Source

Console.scala

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.

Value parameters

err

the new error stream.

thunk

the code to execute with the new error stream active

Attributes

Returns

the results of thunk

See also

withErr[T](err:PrintStream)(thunk: => T)

Source

Console.scala

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.

Value parameters

thunk

the code to execute with the new input stream active

Attributes

Returns

the results of thunk

See also

withIn[T](in:InputStream)(thunk: => T)

Example

val someFile:Reader = openFile("file.txt")
withIn(someFile) {
  // Reads a line from file.txt instead of default input
  println(readLine)
}

Source

Console.scala

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.

Value parameters

in

the new input stream.

thunk

the code to execute with the new input stream active

Attributes

Returns

the results of thunk

See also

withIn[T](reader:Reader)(thunk: => T)

Source

Console.scala

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.

Value parameters

out

the new output stream.

thunk

the code to execute with the new output stream active

Attributes

Returns

the results of thunk

See also

withOut[T](out:OutputStream)(thunk: => T)

Example

withOut(Console.err) { println("This goes to default _error_") }

Source

Console.scala

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.

Value parameters

out

the new output stream.

thunk

the code to execute with the new output stream active

Attributes

Returns

the results of thunk

See also

withOut[T](out:PrintStream)(thunk: => T)

Source

Console.scala

color-magenta

Foreground color for ANSI magenta

Background color for ANSI magenta

color-blue

Foreground color for ANSI blue

Background color for ANSI blue

color-red

Foreground color for ANSI red

Background color for ANSI red

color-cyan

Foreground color for ANSI cyan

Background color for ANSI cyan

style-control

color-yellow

Foreground color for ANSI yellow

Background color for ANSI yellow

color-white

Foreground color for ANSI white

Background color for ANSI white

color-black

Foreground color for ANSI black

Background color for ANSI black

color-green

Foreground color for ANSI green

Background color for ANSI green

In this article