Pregunta

¿Cómo es posible que F # examine las cadenas de formato en el momento de la compilación para determinar que x tiene el tipo int en la siguiente definición?

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

¿Está esto codificado en el idioma o alguien podría escribir su propio " my_print " ¿Función que utiliza cadenas de formato con una sintaxis diferente? Por ejemplo:

let foo x = my_print "{integer}" x
¿Fue útil?

Solución

Puede leer un poco sobre esto en 6.4.17 (formatos 'printf') aquí , pero brevemente

  • está integrado en el lenguaje
  • los literales de cadena pueden ser efectivamente 'forzados' en el extraño 'Formato' tipo
  • printf y sus amigos esperan un primer argumento del tipo de Formato, haciendo que la coacción suceda

El resultado neto es que puedes crear tus propias funciones de estilo printf, pero debes usar los mismos formatos% s, ya que esas cosas están integradas.

Otros consejos

Aquí es un ejemplo de cómo puede construir su propia impresión. Funciones de estilo en F #. No puede cambiar los especificadores de formato (por ejemplo, "% d "), pero puede aprovechar los especificadores existentes para crear funciones de formato de cadena adicionales que el compilador escribirá check.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top