Подтвердить что ты не робот

Простой тест типа в F #

Я уже давно занимаюсь поиском в Интернете... Хорошо, мне очень жаль, что это пафосно легко, но есть ли в F # оператор для сравнения типов классов, таких как ключевое слово 'is' в С#? Я не хочу использовать полномасштабное выражение о матче или начинать кастинг. Приветствия

4b9b3361

Ответ 1

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

let foo = bar :? System.Random

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

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

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

let foo = box bar :? System.Random