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
Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top