IO
コンソールと filesystem の 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")
}