I have been studying how to save files to the filesystem and I had some doubts related to the Erlang functions responsible to deal with binaries.
For instance:
def saveFile(path, file) do
binary = :erlang.term_to_binary(file)
end
def loadFile(path) do
{status, binary} = File.read(path)
case status do
:ok -> :erlang.binary_to_term(binary)
:error -> "File not exists. Did you write the correct path?"
end
What is the “term” word used in the erlang functions above?
Term is any Erlang term. In other words, any value in Erlang is a term.
So any value can be converted to a binary?
Yes, but beware that it will use External Term Format, not “human readable format”.
EDIT: Not only it can be encoded into binary, it have to. Otherwise the Distributed Erlang couldn’t exist at all.
Alrighttt, now i understand it. Thanks!!
yes, and they’re not kidding when they mean “any term”. For example, do this:
f = fn x -> x + 1 end
then save the term in f to a file. Close your elixir session, start a new one, open the file into a variable f in your new session and then do this:
f.(4)