diff --git a/09_defer/log.txt b/09_defer/log.txt index d01218d..39d7707 100644 --- a/09_defer/log.txt +++ b/09_defer/log.txt @@ -1,2 +1 @@ -asiofjasodifjasdfasdfasdfasd -asdfasdfasdfasdfasdfasdfsadf \ No newline at end of file +This is a log file diff --git a/09_defer/state.v b/09_defer/state.v new file mode 100644 index 0000000..6eab58b --- /dev/null +++ b/09_defer/state.v @@ -0,0 +1,41 @@ +import os { create } + +enum State{ + normal + write_log + return_error +} + +fn write_log(state State) !int { + mut f := create('log.txt')! + + defer { + f.close() + println('File closed') + } + + match state{ + .normal{ + return f.writeln("This is a normal file") + } + + .write_log { + return f.writeln("This is a log file") + } + + .return_error{ + return error('nothing written; file open: ${f.is_opened}') + } + } + return 0 +} + +pub fn main(){ + n := write_log(.write_log) or { + println('Error ${err}') + 0 + } + + println('${n} bytes written') + +} \ No newline at end of file