IO
控制台与文件系统 IO,通过 `IO` 效果跟踪。
IO
IO 效果表示与外部世界的交互: 控制台输出、读取输入、文件访问等。
控制台输出
fn main() with IO {
print("Hello, ")
println("Sounio!")
}
读取输入
read_line() 返回 string:
fn main() with IO {
println("Enter your name:")
let name = read_line()
print("Hi, ")
println(name)
}
效果约束
如果函数需要 IO,调用者也必须声明 with IO(或传播/处理该效果)。
下面的写法会失败:
fn read_file(path: string) -> string with IO {
""
}
fn main() {
let _ = read_file("test.txt") // ERROR: IO not declared
}
修复方式:
fn read_file(path: string) -> string with IO {
""
}
fn main() with IO {
let _ = read_file("test.txt")
}