Implements functionality for printing Scala values on the terminal. For reading values useStdIn. Also defines constants for marking up text on ANSI terminals.
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.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! |
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) |
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.
Prints an object toout using itstoString method.
Prints an object toout using itstoString method.
the object to print; may be null.
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 injava.util.Formatter.
the arguments used to instantiating the pattern.
the pattern for formatting the arguments.
java.lang.IllegalArgumentException if there was a problem with the format string or arguments
Prints a newline character on the default output.
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.
the object to print.
IO Defaults
These values provide direct access to the standard IO channels
The default error, can be overridden bywithErr
The default input, can be overridden bywithIn
The default output, can be overridden bywithOut
IO Redefinition
These methods allow substituting alternative streams for the duration of a body of code. Threadsafe by virtue ofscala.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.
the new error stream.
the code to execute with the new error stream active
the results ofthunk
withErr[T](err:OutputStream)(thunk: => T)
withErr(Console.out) { err.println("This goes to default _out_") }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.
the new error stream.
the code to execute with the new error stream active
the results ofthunk
withErr[T](err:PrintStream)(thunk: => 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.
the code to execute with the new input stream active
the results ofthunk
withIn[T](in:InputStream)(thunk: => T)
val someFile:Reader = openFile("file.txt")withIn(someFile) { // Reads a line from file.txt instead of default input println(readLine)}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.
the new input stream.
the code to execute with the new input stream active
the results ofthunk
withIn[T](reader:Reader)(thunk: => 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.
the new output stream.
the code to execute with the new output stream active
the results ofthunk
withOut[T](out:OutputStream)(thunk: => T)
withOut(Console.err) { println("This goes to default _error_") }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.
the new output stream.
the code to execute with the new output stream active
the results ofthunk
withOut[T](out:PrintStream)(thunk: => T)
Foreground color for ANSI magenta
Background color for ANSI magenta
Foreground color for ANSI blue
Background color for ANSI blue
Foreground color for ANSI red
Background color for ANSI red
Foreground color for ANSI cyan
Background color for ANSI cyan
ANSI blink
ANSI bold
ANSI invisible
Reset ANSI styles
ANSI reversed
ANSI underlines
Foreground color for ANSI yellow
Background color for ANSI yellow
Foreground color for ANSI white
Background color for ANSI white
Foreground color for ANSI black
Background color for ANSI black
Foreground color for ANSI green
Background color for ANSI green