Implements functionality for printing Scala values on the terminal. For reading values use StdIn. 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) |
| Supertypes | |
|---|---|
| Self type |
These methods provide output via the console.
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 to out using its toString method.
| Value parameters |
|
|---|
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 |
|
|---|---|
| Throws |
|
Prints a newline character on the default output.
Prints out an object to the default output, followed by a newline character.
| Value parameters |
|
|---|
These values provide direct access to the standard IO channels
The default error, can be overridden by withErr
The default input, can be overridden by withIn
The default output, can be overridden by withOut
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.
| Value parameters |
|
|---|---|
| Returns | the results of |
| See also |
|
| Example |
withErr(Console.out) { err.println("This goes to default _out_") }
|
Sets the default error stream for the duration of execution of one thunk.
| Value parameters |
|
|---|---|
| Returns | the results of |
| See also |
|
Sets the default input stream for the duration of execution of one thunk.
| Value parameters |
|
|---|---|
| Returns | the results of |
| See also |
|
| Example |
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.
| Value parameters |
|
|---|---|
| Returns | the results of |
| See also |
|
Sets the default output stream for the duration of execution of one thunk.
| Value parameters |
|
|---|---|
| Returns | the results of |
| See also |
|
| Example |
withOut(Console.err) { println("This goes to default _error_") }
|
Sets the default output stream for the duration of execution of one thunk.
| Value parameters |
|
|---|---|
| Returns | the results of |
| See also |
|
Foreground color for ANSI magenta
| Inherited from | AnsiColor |
|---|
Background color for ANSI magenta
| Inherited from | AnsiColor |
|---|
Foreground color for ANSI blue
| Inherited from | AnsiColor |
|---|
Background color for ANSI blue
| Inherited from | AnsiColor |
|---|
Foreground color for ANSI red
| Inherited from | AnsiColor |
|---|
Background color for ANSI red
| Inherited from | AnsiColor |
|---|
Foreground color for ANSI cyan
| Inherited from | AnsiColor |
|---|
Background color for ANSI cyan
| Inherited from | AnsiColor |
|---|
ANSI blink
| Inherited from | AnsiColor |
|---|
ANSI bold
| Inherited from | AnsiColor |
|---|
ANSI invisible
| Inherited from | AnsiColor |
|---|
Reset ANSI styles
| Inherited from | AnsiColor |
|---|
ANSI reversed
| Inherited from | AnsiColor |
|---|
ANSI underlines
| Inherited from | AnsiColor |
|---|
Foreground color for ANSI yellow
| Inherited from | AnsiColor |
|---|
Background color for ANSI yellow
| Inherited from | AnsiColor |
|---|
Foreground color for ANSI white
| Inherited from | AnsiColor |
|---|
Background color for ANSI white
| Inherited from | AnsiColor |
|---|
Foreground color for ANSI black
| Inherited from | AnsiColor |
|---|
Background color for ANSI black
| Inherited from | AnsiColor |
|---|
Foreground color for ANSI green
| Inherited from | AnsiColor |
|---|
Background color for ANSI green
| Inherited from | AnsiColor |
|---|
© 2002-2022 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://scala-lang.org/api/3.2.0/scala/Console$.html