Pregunta

He estado buscando en Google por un tiempo ... OK, lo siento, este es patéticamente fácil, pero ¿hay un operador en F# para comparar los tipos de clases, como la palabra clave 'is' en C#? No quiero usar una declaración de partida completa o comenzar a lanzar cosas. Salud

¿Fue útil?

Solución

Puedes usar el :? construir ambos como patrón (dentro match) o como operador:

let foo = bar :? System.Random

Esto se comporta de manera ligeramente diferente que en C#, porque el compilador aún intenta hacer algunos controles en el tiempo de compilación. Por ejemplo, es un error usar esto si el resultado sería seguramente false:

let bar = 42
let foo = bar :? System.Random // Error

No creo que esto pueda conducir a la confusión, pero siempre puedes agregar box para convertir el argumento a obj, que se puede probar con cualquier tipo:

let foo = box bar :? System.Random

Otros consejos

Si desea una referencia general C#-a f#, consulte

http://lorgonblog.wordpress.com/2008/11/28/what-does-this-c-code-look-like-in-f-fpart-one-expressionsand-statements/

que responde a esta pregunta y a muchos otros.

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