F # inferência de tipos de cadeias de formato
-
03-07-2019 - |
Pergunta
Como é possível para F # para analisar seqüências de formato em tempo de compilação para determinar que x tem o tipo int na seguinte definição?
let foo x = sprintf "%d" x`?
É este hard-coded para a língua ou alguém poderia escrever sua própria função "my_print" que seqüências de formato usos com uma sintaxe diferente? Por exemplo:
let foo x = my_print "{integer}" x
Solução
Você pode ler um pouco sobre isso em 6.4.17 (formatos 'printf') aqui , mas brevemente
- é construído na linguagem
- strings literais de forma eficaz pode ser 'coagido' para o tipo estranho 'Format'
- printf e amigos esperam um primeiro argumento do tipo Format, tornando a coerção acontecer
O resultado líquido é que você pode construir suas próprias funções de estilo printf, mas deve usar formatos da mesma% s, uma vez que o material é built-in.
Outras dicas
Aqui é um exemplo de como você pode construir seu próprio printf- funções de estilo em F #. Você não pode alterar o formato especificadores (por exemplo, "% D"), mas você pode aproveitar os especificadores existentes para construir funções adicionais de formatação da string que o compilador irá tipo de verificação.