идиоматических способ сделать это в F # является с sprintf
:
let newString = sprintf "First Name: %s Last Name: %s" "John" "Doe"
Кроме того, у вас есть доступ к .net String.Format
:
let newString = String.Format("First Name: {0} Last Name: {1}", "John", "Doe")
Преимущество первого является то, что она является типобезопасным (т.е. вы не можете передать строку в целочисленный форматтер, например «% d»). Как отметил Бенджол в комментариях, невозможно передать строку формата в sprintf
, потому что она статически типизирована. См. here для получения дополнительной информации.
'printf' и друзья достаточно близки. –
Это может быть сделано как поставщик типа, с возможностью проверки всех отверстий. Я пишу подобный, но специализированный для XML https://github.com/mausch/XmlLiteralsTypeProvider/blob/master/Tests/Program.fs –
То, что я описал в своем предыдущем комментарии, теперь реализовано! http://blog.mavnn.co.uk/type-safe-printf-via-type-providers/ –