F# 为什么我不能使用 :? F# 交互中的运算符?
F# Why can't I use the :? operator in F# interactive?
我正在尝试检查变量是否属于特定类型,如下所示:
let s = "abc"
let isString = s :? string
但在 F# 交互中,出现以下错误:
error FS0016: The type 'string' does not have any proper subtypes and cannot be used as the source of a type test or runtime coercion.
为什么会这样?我希望 isString 是一个布尔值。
因为你正在尝试密封类型。
试试这个:
let s = box "abc"
let isString = s :? string
对密封类型进行这种强制测试没有意义,因为它们不能有任何子类型,这就是错误消息告诉您的内容。
box
关键字将始终 return 一个对象,无论源是引用类型(在本例中)还是值类型,在这种情况下它将“装箱”它。
我正在尝试检查变量是否属于特定类型,如下所示:
let s = "abc"
let isString = s :? string
但在 F# 交互中,出现以下错误:
error FS0016: The type 'string' does not have any proper subtypes and cannot be used as the source of a type test or runtime coercion.
为什么会这样?我希望 isString 是一个布尔值。
因为你正在尝试密封类型。
试试这个:
let s = box "abc"
let isString = s :? string
对密封类型进行这种强制测试没有意义,因为它们不能有任何子类型,这就是错误消息告诉您的内容。
box
关键字将始终 return 一个对象,无论源是引用类型(在本例中)还是值类型,在这种情况下它将“装箱”它。