40 lines
1.3 KiB
Julia
40 lines
1.3 KiB
Julia
|
|
# File IO is really similar to how it would be done in python and C.
|
|
|
|
io = open("test.txt", "w") # Opens test.txt for writing
|
|
write(io, "Hello World!") # writes a string to it
|
|
close(io) # closes the file
|
|
|
|
# However the more appropriate way to do it would be more similar to
|
|
# Python's "with" statement. This encloses the file handling in a code block
|
|
# and automatically closes the filestream and does cleanup if anything goes
|
|
# wrong.
|
|
open("test.txt", "w") do io
|
|
write(io, "Hello\nWorld!")
|
|
end
|
|
|
|
# The do-syntax here is really just syntactical sugar for giving the
|
|
# open() function a function as an argument
|
|
|
|
# The following syntax is effectively what the do-syntax above does.
|
|
# Create a function taking in a single argument with the file-handling code
|
|
function f(io)
|
|
write(io, "Hello\nWorld!")
|
|
end
|
|
|
|
# call the open function with this function as the first parameter
|
|
open(f, "test.txt", "w")
|
|
|
|
# This makes for some really clean and safe file handling syntax.
|
|
s = open("test.txt", "r") do io
|
|
collect(eachline(io))
|
|
end
|
|
display(s)
|
|
|
|
# for simple functions as the one above it is possible to just pass
|
|
# the the function directly in without using the do-syntax
|
|
# for a really compact one line function call
|
|
# The ∘ symbol is function composition (from mathematics)
|
|
s = open(collect ∘ eachline, "test.txt", "r")
|
|
display(s)
|