出于好奇,我如何在受歧视的工会案件的实际容器上进行模式匹配?
具体来说,我怎么知道某个值是否属于特定类型?
我尝试使用模式构造(即:?):
let isVehicle = fun a -> match a with
| :? Vehicle -> "Is a vehicle"
| _ -> "Is NOT a vehicle"
错误:
此类型的运行时强制或类型测试 ' a到 车辆涉及基于该程序点之前的信息的不确定类型。不允许运行时类型测试 一些类型。需要进一步的类型注释。
以下是整个代码:
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"
答案 0 :(得分:3)
您应该为lambda参数添加类型注释:
let isVehicle = fun (a:obj) -> match a with
| :? Vehicle -> "Is a vehicle"
| _ -> "Is NOT a vehicle"