Вывод типа F # в строках формата - PullRequest
4 голосов
/ 06 марта 2009

Как F # может исследовать строки формата во время компиляции, чтобы определить, что x имеет тип int в следующем определении?

let foo x = sprintf "%d" x`? 

Это жестко запрограммировано в язык или кто-то может написать свою собственную функцию "my_print", которая использует строки формата с другим синтаксисом? Например:

let foo x = my_print "{integer}" x

Ответы [ 2 ]

3 голосов
/ 14 марта 2009

Здесь - пример того, как вы можете создавать свои собственные функции в стиле printf в F #. Вы не можете изменить спецификаторы формата (например, «% d»), но вы можете использовать существующие спецификаторы для создания дополнительных функций форматирования строк, которые компилятор будет проверять.

3 голосов
/ 06 марта 2009

Вы можете прочитать об этом немного в 6.4.17 (форматы 'printf') здесь , но кратко

  • встроено в язык
  • строковые литералы могут быть эффективно "приведены" в странный тип "Format"
  • printf и друзья ожидают первый аргумент типа Format, что приводит к принуждению

В результате вы можете создавать свои собственные функции в стиле printf, но должны использовать те же форматы% s, так как они встроены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...