[英]How do I Pattern Match on the actual container of Discriminated Union cases?
出于好奇,我如何在已区分的工会案件的实际容器中进行模式匹配?
具体来说,如何知道某个值是否为特定类型?
我尝试使用模式构造(即:?):
let isVehicle = fun a -> match a with
| :? Vehicle -> "Is a vehicle"
| _ -> "Is NOT a vehicle"
错误:
从'a类型到Vehicle的运行时强制或类型测试涉及一个不确定的类型,该类型基于此程序点之前的信息。 在某些类型上不允许运行时类型测试。 需要进一步的类型注释。
这是完整的代码:
type Vehicle =
| Car
| Tank
| Helicopter
let move = function
| Car -> "wheels spin"
| Tank -> "tracks roll"
| Helicopter -> "Blades spin"
let isVehicle = fun a -> match a with
| :? Vehicle -> "Is a vehicle"
| _ -> "Is NOT a vehicle"
您应该在lambda参数中添加类型注释:
let isVehicle = fun (a:obj) -> match a with
| :? Vehicle -> "Is a vehicle"
| _ -> "Is NOT a vehicle"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.