console 包

介绍

console 提供从控制台读取和向控制台打印的功能。

console 默认为 UTF-8 编码,windows 环境需手动执行 chcp 65001(将 windows 终端更改为 UTF-8 编码)。

主要接口

class Console

public class Console

此类提供标准输入、标准输出和标准错误 Stream 的获取接口

类的主要函数如下所示:

prop stdIn

public static prop stdIn: ConsoleReader

功能:该成员属性为 ConsoleReader 类,它提供标准输入的获取接口

prop stdOut

public static prop stdOut: ConsoleWriter

功能:该成员属性为 ConsoleWriter 类,它提供标准输出的获取接口

prop stdErr

public static prop stdErr: ConsoleWriter

功能:该成员属性为 ConsoleWriter 类,它提供标准错误的获取接口

class ConsoleReader

public class ConsoleReader <: InputStream

提供从控制台读出数据并转换成字符或字符串的功能。 读操作是同步的,内部设有缓冲区来保存控制台输入的内容,当到达控制台输入流的结尾时,控制台读取函数将返回 None, 例如在 Unix 上键入 control-D 或在 Windows 上键入 control-Z。如果稍后在控制台的输入设备上输入其他字符,则后续读取操作将成功。

func read

public func read(): Option<Rune>

功能:从标准输入中读取一个字符。

返回值:读取到字符,返回 Option<Rune>,否则返回 Option<Rune>.None

func readln

public func readln(): Option<String>

功能:从标准输入中读取一行字符读取到字符,返回 Option<String>,结果不包含末尾换行符。

返回值:读取到的行信息,读取失败返回 Option<String>.None

func readToEnd

public func readToEnd(): Option<String>

功能:从标准输入中读取所有字符,以 Option<String> 的形式返回。读取到字符,返回 Option<String>,否则返回 Option<String>.None。读取失败时会返回 Option<String>.None

返回值:将输入的所有行信息以 Option<String> 的形式返回

func readUntil

public func readUntil(ch: Char): Option<String>

功能:从标准输入中读取数据直到读取到字符 ch 结束, ch 包含在结果中,如果读取到文件结束符 EOF,将返回读取到的所有信息读取失败时会返回 Option<String>.None

返回值:将输入的信息以 Option<String> 的形式返回

func readUntil

public func readUntil(predicate: (Char) -> Bool): Option<String>

功能:从标准输入中读取数据直到读取到的字符满足 predicate 条件结束,满足 predicate: (Char) -> Bool 条件的字符包含在结果中,如果读取到文件结束符 EOF,将返回读取到的所有信息输入失败时会返回 Option<String>.None

参数:

  • predicate:终止读取的条件

返回值:将输入的信息以 Option<String> 的形式返回

func read

public func read(arr: Array<Byte>): Int64

功能:从标准输入中读取并放入 arr 中,该函数存在风险,可能读取出来的结果恰好把 UTF-8 code point 从中截断。

参数:

  • arr:目标 Array

返回值:返回读取到的字节长度

class ConsoleWriter

public class ConsoleWriter <: OutputStream

此类提供保证线程安全的标准输出功能,每次 write 调用写到控制台的结果是完整的,不 同的 write 函数调用的结果不会混合到一起。

func flush

public func flush(): Unit

功能:刷新输出流。

func write

public func write(buffer: Array<Byte>): Unit

功能:将字节数组 buffer 写入标准输出流中。

参数:

  • buffer:要被写入的数组

func writeln

public func writeln(buffer: Array<Byte>): Unit

功能:将字节数组 buffer 写入标准输出流中,并换行。

参数:

  • buffer:要被写入的数组

func write

public func write(v: String): Unit

功能:将 String 类型入参 v 写入标准输出流中。

参数:

  • v:要被写入的 String 类型的值

func write

public func write<T>(v: T): Unit where T <: ToString

功能:将实现了 ToString 接口的数据类型写入标准输出流中。

参数:

  • v:要被写入的 ToString 类型的实例

func write

public func write(v: Bool): Unit

功能:将 Bool 类型写入标准输出流中。

参数:

  • v:要被写入的 Bool 类型的数据

func write

public func write(v: Int8): Unit

功能:将 Int8 类型写入标准输出流中。

参数:

  • v:要被写入的 Int8 类型的值

func write

public func write(v: Int16): Unit

功能:将 Int16 类型写入标准输出流中。

参数:

  • v:要被写入的 Int16 类型的值

func write

public func write(v: Int32): Unit

功能:将 Int32 类型写入标准输出流中。

参数:

  • v:要被写入的 Int32 类型的值

func write

public func write(v: Int64): Unit

功能:将 Int64 类型写入标准输出流中。

参数:

  • v:要被写入的 Int64 类型的值

func write

public func write(v: UInt8): Unit

功能:将 UInt8 类型写入标准输出流中。

参数:

  • v:要被写入的 UInt8 类型的值

func write

public func write(v: UInt16): Unit

功能:将 UInt16 类型写入标准输出流中。

参数:

  • v:要被写入的 UInt16 类型的值

func write

public func write(v: UInt32): Unit

功能:将 UInt32 类型写入标准输出流中。

参数:

  • v:要被写入的 UInt32 类型的值

func write

public func write(v: UInt64): Unit

功能:将 UInt64 类型写入标准输出流中。

参数:

  • v:要被写入的 UInt64 类型的值

func write

public func write(v: Float16): Unit

功能:将 Float16 类型写入标准输出流中。

参数:

  • v:要被写入的 Float16 类型的值

func write

public func write(v: Float32): Unit

功能:将 Float32 类型写入标准输出流中。

参数:

  • v:要被写入的 Float32 类型的值

func write

public func write(v: Float64): Unit

功能:将 Float64 类型写入标准输出流中。

参数:

  • v:要被写入的 Float64 类型的值

func write

public func write(v: Char): Unit

功能:将 Char 类型写入标准输出流中。

参数:

  • v:要被写入的 Char 类型的值

func writeln

public func writeln(v: String): Unit

功能:将 String 写入标准输出流中,并换行。

参数:

  • v:要被写入的 String 类型的值

func writeln

public func writeln<T>(v: T): Unit where T <: ToString

功能:将 ToString 写入标准输出流中,并换行。

参数:

  • v:要被写入的 ToString 类型的实例

func writeln

public func writeln(v: Bool): Unit

功能:将 Bool 写入标准输出流中,并换行。

参数:

  • v:要被写入的 Bool 类型的值

func writeln

public func writeln(v: Int8): Unit

功能:将 Int8 写入标准输出流中,并换行。

参数:

  • v:要被写入的 Int8 类型的值

func writeln

public func writeln(v: Int16): Unit

功能:将 Int16 写入标准输出流中,并换行。

参数:

  • v:要被写入的 Int16 类型的值

func writeln

public func writeln(v: Int32): Unit

功能:将 Int32 写入标准输出流中,并换行。

参数:

  • v:要被写入的 Int32 类型的值

func writeln

public func writeln(v: Int64): Unit

功能:将 Int64 写入标准输出流中,并换行。

参数:

  • v:要被写入的 Int64 类型的值

func writeln

public func writeln(v: UInt8): Unit

功能:将 UInt8 写入标准输出流中,并换行。

参数:

  • v:要被写入的 UInt8 类型的值

func writeln

public func writeln(v: UInt16): Unit

功能:将 UInt16 写入标准输出流中,并换行。

参数:

  • v:要被写入的 UInt16 类型的值

func writeln

public func writeln(v: UInt32): Unit

功能:将 UInt32 写入标准输出流中,并换行。

参数:

  • v:要被写入的 UInt32 类型的值

func writeln

public func writeln(v: UInt64): Unit

功能:将 UInt64 写入标准输出流中,并换行。

参数:

  • v:要被写入的 UInt64 类型的值

func writeln

public func writeln(v: Float16): Unit

功能:将 Float16 写入标准输出流中,并换行。

参数:

  • v:要被写入的 Float16 类型的值

func writeln

public func writeln(v: Float32): Unit

功能:将 Float32 写入标准输出流中,并换行。

参数:

  • v:要被写入的 Float32 类型的值

func writeln

public func writeln(v: Float64): Unit

功能:将 Float64 写入标准输出流中,并换行。

参数:

  • v:要被写入的 Float64 类型的值

func writeln

public func writeln(v: Char): Unit

功能:将 Char 写入标准输出流中,并换行。

参数:

  • v:要被写入的 Char 类型的值

示例

Console 示例

下面是 Console 的使用示例。

代码如下:

from std import console.*

main() {
    Console.stdOut.write("请输入信息1:")
    var c = Console.stdIn.readln()
    var r = c.getOrThrow()
    Console.stdOut.writeln("输入的信息1为:" + r)
    Console.stdOut.write("请输入信息2:")
    c = Console.stdIn.readln()
    r = c.getOrThrow()
    var a = Console.stdOut
    a.writeln("输入的信息2为:" + r)
    return 0
}

运行结果如下:

请输入信息1:你好,请问今天星期几?
输入的信息1为:你好,请问今天星期几?
请输入信息2:你好,请问今天几号?
输入的信息2为:你好,请问今天几号?