In OCaml, posso usare Printf.printf
di output formattato stringa, comeCome ottenere una stringa formattata in OCaml?
Printf.printf "Hello %s %d\n" world 123
Tuttavia, printf
è una sorta di uscita.
Ciò che desidero non è per l'output, ma per una stringa. Per esempio, io voglio
let s = something "Hello %s %d\n" "world" 123
quindi posso ottenere s = "Hello World 123"
Come posso fare questo?
posso definire così: 'let fmt =" Ciao% s% d \ n ";; Printf.sprintf fmt "world" 123'? –
@JacksonTale, non sono proprio sicuro. Sembra che tu possa fare "let fmt = Printf.sprintf" Hello% s% d \ n ";; fmt "world" 123 ;; 'tuttavia. – zch
@JacksonTale: se lo fai in questo modo, dedurrà il tipo sbagliato (stringa anziché formato thingy). In OCaml c'è un "sovraccarico" di stringhe letterali tra stringhe e cose di formato. Per inferire la cosa giusta, devi usare 'format_of_string' (che è una funzione di identificazione, ma aiuta il sistema di tipi):' let fmt = format_of_string "Hello% s% d \ n" ;; Printf.sprintf fmt "world" 123'. O forse puoi semplicemente fare '(fun fmt -> Printf.sprintf fmt" world "123)" Hello% s% d \ n "' se è sufficiente. – newacct