Объект scala.Console
Реализует функциональность для вывода значений Scala в терминал. Для считывания значений используйте StdIn. Также определяет константы для форматирования текста на терминалах с поддержкой ANSI.
Вывод в консоль
Используйте методы print для вывода текста.
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
Используйте коды ANSI для изменения цвета вывода в консоль в STDOUT или 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 |
| да |
| $ scala PrimeTest |
| 56474 |
| НЕТ! |
Переопределение IO
Используйте переопределение IO для временной замены входных и/или выходных потоков. В этом примере метод, основанный на потоке, обернут в функцию.
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 |
| Первые простые числа: Vector(2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47) |
| Суперагрегаты | |
|---|---|
| Тип "self" |
Вывод в консоль
Эти методы обеспечивают вывод через консоль.
Исходный код
Очищает выходной поток. Эта функция необходима, когда частичный вывод (т.е. вывод, не завершенный символом новой строки) должен быть отображен в терминале.
Исходный код
Выводит объект в out с помощью его метода toString.
| Параметры значения |
|
|---|
Исходный код
Выводит свои аргументы как отформатированную строку в стандартный вывод, основываясь на шаблоне строки (аналогично printf в C).
Интерпретация форматов описана в java.util.Formatter.
| Параметры значения |
|
|---|---|
| Исключения |
|
Исходный код
Выводит символ новой строки в стандартный вывод.
Исходный код
Выводит объект в стандартный вывод, за которым следует символ новой строки.
| Параметры значения |
|
|---|
Стандартные IO каналы
Эти значения обеспечивают прямой доступ к стандартным каналам IO
Исходный код
def err: PrintStream
Стандартная ошибка, может быть переопределена withErr
Исходный код
def in: BufferedReader
Стандартный ввод, может быть переопределён withIn
Исходный код
def out: PrintStream
Стандартный вывод, может быть переопределён withOut
Переопределение IO
Эти методы позволяют подставить альтернативные потоки на время выполнения блока кода. Безопасные для потоков благодаря scala.util.DynamicVariable.
Исходный код
def withErr[T](err: PrintStream)(thunk: => T): T
Устанавливает стандартный поток ошибок на время выполнения одного thunk.
| Параметры значения |
|
|---|---|
| Возвращает | результат |
| См. также |
|
| Пример |
withErr(Console.out) { err.println("This goes to default _out_") }
|
Исходный код
def withErr[T](err: OutputStream)(thunk: => T): T
Устанавливает стандартный поток ошибок на время выполнения одного thunk.
| Параметры значения |
|
|---|---|
| Возвращает | результат |
| См. также |
|
Исходный код
Устанавливает стандартный входной поток на время выполнения одного thunk.
| Параметры значения |
|
|---|---|
| Возвращает | результат |
| См. также |
|
| Пример |
val someFile:Reader = openFile("file.txt")
withIn(someFile) {
// Reads a line from file.txt instead of default input
println(readLine)
}
|
Исходный код
def withIn[T](in: InputStream)(thunk: => T): T
Устанавливает стандартный входной поток на время выполнения одного thunk.
| Параметры значения |
|
|---|---|
| Возвращает | результат |
| См. также |
|
Исходный код
def withOut[T](out: PrintStream)(thunk: => T): T
Устанавливает стандартный выходной поток на время выполнения одного thunk.
| Параметры значения |
|
|---|---|
| Возвращает | результат |
| См. также |
|
| Пример |
withOut(Console.err) { println("This goes to default _error_") }
|
Исходный код
def withOut[T](out: OutputStream)(thunk: => T): T
Устанавливает стандартный выходной поток на время выполнения одного thunk.
| Параметры значения |
|
|---|---|
| Возвращает | результат |
| См. также |
|
цвет-пурпурный
Источник
final val MAGENTA: "\u001b[35m"
Цвет переднего плана для ANSI пурпурного
| Унаследовано от | AnsiColor |
|---|
Источник
final val MAGENTA_B: "\u001b[45m"
Цвет фона для ANSI пурпурного
| Унаследовано от | AnsiColor |
|---|
цвет-синий
Источник
final val BLUE: "\u001b[34m"
Цвет переднего плана для ANSI синего
| Унаследовано от | AnsiColor |
|---|
Источник
final val BLUE_B: "\u001b[44m"
Цвет фона для ANSI синего
| Унаследовано от | AnsiColor |
|---|
цвет-красный
Источник
final val RED: "\u001b[31m"
Цвет переднего плана для ANSI красного
| Унаследовано от | AnsiColor |
|---|
Источник
final val RED_B: "\u001b[41m"
Цвет фона для ANSI красного
| Унаследовано от | AnsiColor |
|---|
цвет-голубой
Источник
final val CYAN: "\u001b[36m"
Цвет переднего плана для ANSI голубого
| Унаследовано от | AnsiColor |
|---|
Источник
final val CYAN_B: "\u001b[46m"
Цвет фона для ANSI голубого
| Унаследовано от | AnsiColor |
|---|
стиль-управление
Источник
final val BLINK: "\u001b[5m"
ANSI мигание
| Унаследовано от | AnsiColor |
|---|
Источник
final val BOLD: "\u001b[1m"
ANSI полужирный
| Унаследовано от | AnsiColor |
|---|
Источник
final val INVISIBLE: "\u001b[8m"
ANSI невидимый
| Унаследовано от | AnsiColor |
|---|
Источник
final val RESET: "\u001b[0m"
Сброс стилей ANSI
| Унаследовано от | AnsiColor |
|---|
Источник
final val REVERSED: "\u001b[7m"
ANSI инвертированный
| Унаследовано от | AnsiColor |
|---|
Источник
final val UNDERLINED: "\u001b[4m"
ANSI подчеркивание
| Унаследовано от | AnsiColor |
|---|
цвет-жёлтый
Источник
final val YELLOW: "\u001b[33m"
Цвет переднего плана для ANSI жёлтого
| Унаследовано от | AnsiColor |
|---|
Источник
final val YELLOW_B: "\u001b[43m"
Цвет фона для ANSI жёлтого
| Унаследовано от | AnsiColor |
|---|
цвет-белый
Источник
final val WHITE: "\u001b[37m"
Цвет переднего плана для ANSI белого
| Унаследовано от | AnsiColor |
|---|
Источник
final val WHITE_B: "\u001b[47m"
Цвет фона для ANSI белого
| Унаследовано от | AnsiColor |
|---|
цвет-чёрный
Источник
final val BLACK: "\u001b[30m"
Цвет переднего плана для ANSI чёрного
| Унаследовано от | AnsiColor |
|---|
Источник
final val BLACK_B: "\u001b[40m"
Цвет фона для ANSI чёрного
| Унаследовано от | AnsiColor |
|---|
цвет-зелёный
Источник
final val GREEN: "\u001b[32m"
Цвет переднего плана для ANSI зелёного
| Унаследовано от | AnsiColor |
|---|
Источник
final val GREEN_B: "\u001b[42m"
Цвет фона для ANSI зелёного
| Унаследовано от | AnsiColor |
|---|
© 2002-2022 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://scala-lang.org/api/3.1.1/scala/Console$.html