我正在尝试编写然后将变量读取到文件中.变量来自我创建的数据类型.
(如果有帮助:
type sys = string*string list的文件 string*sys list的文件夹;;
)
我怎样才能做到这一点?我一直在阅读关于fprintf的使用,但是对于我得到的东西,它必须先以某种方式转换为String,对吧?
如果您确定您的类型不会改变,您可以使用input_value和output_value来自Pervasives.
let write_sys sys file =
let oc = open_out file in
output_value oc sys;
close_out oc
let read_sys file =
let ic = open_in file in
let sys : sys = input_value ic in
close_in ic;
sys
Run Code Online (Sandbox Code Playgroud)
read_sys每当你试图读取与其他版本存储的值时sys(或者如果你在写和读之间改变你的OCaml版本),它就会中断.
如果您需要安全性,可以使用sexplib等自动序列化程序(如果您希望能够读取正在创建的文件)或者使用biniou进行高效转换.