Spec-Zone.ru › Scala 3.1

Объект scala.Console

Исходный код

объект Console расширяет AnsiColor

Реализует функциональность для вывода значений 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)

Суперагрегаты
тракт AnsiColor
класс Object
тракт Matchable
класс Any
Тип "self"
Console.type

Вывод в консоль

Эти методы обеспечивают вывод через консоль.

Исходный код
def flush(): Unit

Очищает выходной поток. Эта функция необходима, когда частичный вывод (т.е. вывод, не завершенный символом новой строки) должен быть отображен в терминале.

Исходный код
def print(obj: Any): Unit

Выводит объект в out с помощью его метода toString.

Параметры значения
obj

объект для вывода; может быть null.

Исходный код
def printf(text: String, args: Any*): Unit

Выводит свои аргументы как отформатированную строку в стандартный вывод, основываясь на шаблоне строки (аналогично printf в C).

Интерпретация форматов описана в java.util.Formatter.

Параметры значения
args

аргументы, используемые для создания шаблона.

text

шаблон для форматирования аргументов.

Исключения
java.lang.IllegalArgumentException

если возникла проблема с строкой формата или аргументами

Исходный код
def println(): Unit

Выводит символ новой строки в стандартный вывод.

Исходный код
def println(x: Any): Unit

Выводит объект в стандартный вывод, за которым следует символ новой строки.

Параметры значения
x

объект для вывода.

Стандартные 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.

Параметры значения
err

новый поток ошибок.

thunk

код, который будет выполнен с новым потоком ошибок

Возвращает

результат thunk

См. также

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

Пример
withErr(Console.out) { err.println("This goes to default _out_") }

Исходный код
def withErr[T](err: OutputStream)(thunk: => T): T

Устанавливает стандартный поток ошибок на время выполнения одного thunk.

Параметры значения
err

новый поток ошибок.

thunk

код, который будет выполнен с новым потоком ошибок

Возвращает

результат thunk

См. также

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

Исходный код
def withIn[T](reader: Reader)(thunk: => T): T

Устанавливает стандартный входной поток на время выполнения одного thunk.

Параметры значения
thunk

код, который будет выполнен с новым входным потоком

Возвращает

результат thunk

См. также

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)
}

Исходный код
def withIn[T](in: InputStream)(thunk: => T): T

Устанавливает стандартный входной поток на время выполнения одного thunk.

Параметры значения
in

новый входной поток.

thunk

код, который будет выполнен с новым входным потоком

Возвращает

результат thunk

См. также

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

Исходный код
def withOut[T](out: PrintStream)(thunk: => T): T

Устанавливает стандартный выходной поток на время выполнения одного thunk.

Параметры значения
out

новый выходной поток.

thunk

код, который будет выполнен с новым выходным потоком

Возвращает

результат thunk

См. также

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

Пример
withOut(Console.err) { println("This goes to default _error_") }

Исходный код
def withOut[T](out: OutputStream)(thunk: => T): T

Устанавливает стандартный выходной поток на время выполнения одного thunk.

Параметры значения
out

новый выходной поток.

thunk

код, который будет выполнен с новым выходным потоком

Возвращает

результат thunk

См. также

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

цвет-пурпурный

Источник
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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API