Tôi có một chức năng loại in_channel -> out_channel -> unit
mà sẽ xuất ra một cái gì đó để out_channel
. Bây giờ tôi muốn có được đầu ra của nó như là một chuỗi. Tạo các tệp tạm thời để viết và đọc lại nó có vẻ xấu xí, vậy làm thế nào tôi có thể làm điều đó? Có phương pháp nào khác để tạo out_channel
bên cạnh Pervasives.open_out
gia đình không?Trong OCaml, làm thế nào tôi có thể tạo ra một out_channel ghi vào một chuỗi/bộ đệm thay vì một tập tin trên đĩa
Thực ra, chức năng này đã triển khai repl. Những gì tôi thực sự cần là để kiểm tra nó theo chương trình, vì vậy tôi muốn đầu tiên quấn nó vào một chức năng của loại string -> string
. Để tạo in_channel
, có vẻ như tôi có thể sử dụng Scanf.Scanning.from_string
, nhưng tôi không biết cách tạo tham số out_channel
.
Tôi không nghĩ rằng có cách để làm điều này. Nó sẽ là khó khăn, bởi vì các chuỗi có độ dài cố định trong OCaml. Họ không thực sự phù hợp như một nơi mở rộng để lưu trữ các nhân vật. Bạn có thể sử dụng Printf.sprintf để tạo một chuỗi có cùng nội dung mà Printf.fprintf sẽ ghi vào kênh đầu ra. Nhưng ngoài ra, bạn có thể phải xây dựng cơ chế của riêng bạn. –