Нижнее / неопределенное значение в F#?
В Haskell есть удобное неопределенное значение, которое можно использовать в качестве заглушки для еще не определенных функций / путей в коде. Есть ли что-нибудь подобное в F#?
3 ответа
Чтобы быть конкретным, вы можете определить такое значение следующим образом:
let undefined<'T> : 'T = failwith "Not implemented yet"
let stub1 (x : int) : float = undefined
let stub2 (x : 'T) : 'T = undefined
Помните, что оценка F# является строгой. Если вы связываете undefined
к значению верхнего уровня, это вызовет исключение во время оценки.
Я думаю
failwith "Not implemented"
было бы в значительной степени эквивалентно
Более конкретный и.NET-дружественный способ
let undefined<'T> : 'T = raise (NotImplementedException())
позволяет пропустить ввод сообщения и по-прежнему отличать это исключение от других в блоке перехвата или трассировке стека.