6.57. kink/io/OUTPUT¶
output のコンパニオンモジュール
6.57.1. output 型¶
output はファイルなど下層の書き込み先に対するバイト列の書き込みポートである。
output は下層の書き込み先へのシーケンシャルな前方アクセスを提供する。
6.57.1.1. Output.write(Bin ...[$config={}])¶
write は Bin のバイト列を書き込む。
コンフィグメソッド:
• C.on_success($success): default = {}
• C.on_error($error): default = 例外を投げる関数
すべてのバイトがIOエラーなしに書き込まれた場合、 write は$successを引数なしで末尾呼び出しする。
IOエラーが起きた場合、 write は$errorを、 exception を引数として末尾呼び出しする。
事前条件
Bin は bin 型でなければならない。
$success は引数を取らない関数でなければならない。
$error は exception を引数に取る関数でなければならない。
例
:BIN_OUTPUT.require_from('kink/io/')
:BIN.require_from('kink/')
:Out <- BIN_OUTPUT.new
Out.write(BIN.of(1 2 3))
Out.write(BIN.of(4 5))
stdout.print_line(Out.bin.repr) # => (bin 0x01 0x02 0x03 0x04 0x05)
例: IOエラー
:FILE.require_from('kink/io/')
:BIN.require_from('kink/')
:CONTROL.require_from('kink/')
:Out <- FILE.open_to_write('/tmp/tmpfile')
Out.close
Out.write(BIN.of(1 2 3)){(:C)
C.on_error{(:Exc)
stderr.print_line(Exc.message)
}
}
# => already closed
Out.write(BIN.of(1 2 3))
# Output:
# -- main exception
# [..root..]
# {..call by host..}
# ,,,
# already closed
6.57.1.2. Output.flush(...[$config={}])¶
flush は下層の書き込み先にバッファされたバイト列を書き込む。
コンフィグメソッド:
• C.on_success($success): default = {}
• C.on_error($error): default = 例外を投げる関数
IOエラーなしにバッファされたバイト列が書き込まれた場合、 flush は$successを引数なしで末尾呼び出しする。
IOエラーが発生した場合、 flush は$errorを、 exception を引数として末尾呼び出しする。
事前条件
$success は引数を取らない関数でなければならない。
$error は exception を引数に取る関数でなければならない。
6.57.1.3. Output.close(...[$config={}])¶
close はバッファをフラッシュして、書き込み先のリソースを閉じる。
コンフィグメソッド:
• C.on_success($success): default = {}
• C.on_error($error): default = 例外を投げる関数
IOエラーなしにバッファがフラッシュされ、リソースが閉じられた場合、 close は$successを引数なしで末尾呼び出しする。
IOエラーが起きた場合、 close は exception を引数として$errorを末尾呼び出しする。
事前条件
$success は引数を取らない関数でなければならない。
$error は exception を引数に取る関数でなければならない。
6.57.2. OUTPUT.is?(Val)¶
is? は Val が output かどうかを戻す。