Localized V2 rewrite for this language is in progress. Showing English-first content for now.

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

下一步