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为:你好,请问今天几号?