Самый простой способ определить собственную функцию, которая принимает строку форматирования, например printf
, - это использовать функцию Printf.kprintf
.Первый аргумент kprintf
- это функция, которая используется для отображения результирующей строки после форматирования (чтобы вы могли передать ее своей функции writelog
):
let writelog (s:string) = printfn "LOG: %s" s
let writelogf fmt = Printf.kprintf writelog fmt
Переданный параметр fmt
в качестве второго аргумента используется строка специального формата.Это работает лучше, чем решение jpalmer , потому что если вы укажете некоторые дополнительные аргументы, они будут напрямую переданы kprintf
(поэтому число аргументов может зависеть от строки форматирования).
Вы можете написать:
> writelogf "Hello";;
LOG: Hello
> writelogf "Hello %d" 42;;
LOG: Hello 42