Простой тип теста в F # - PullRequest
17 голосов
/ 10 июня 2011

Я уже некоторое время гуглю ... Хорошо, извините, этот патетически прост, но есть ли в F # оператор для сравнения типов классов, например, ключевое слово "is" в C #? Я не хочу использовать полное заявление о матче или начинать кастовать вещи. Приветствия

Ответы [ 2 ]

25 голосов
/ 10 июня 2011

Вы можете использовать конструкцию :? как шаблон (внутри match) или как оператор:

let foo = bar :? System.Random

Это ведет себя немного иначе, чем в C #, потому что компилятор все еще пытается сделатьнекоторые проверки во время компиляции.Например, ошибочно использовать это, если результат будет точно false:

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

Я не думаю, что это может привести к путанице, но вы всегда можете добавить box для преобразованияаргумент obj, который может быть проверен для любого типа:

let foo = box bar :? System.Random
6 голосов
/ 10 июня 2011

Если вы хотите краткий справочник по C #-to-F #, см.

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

, который отвечает на этот вопрос и многие другие.

...