gpt4 book ai didi

f# - 这条规则永远不会被匹配到 : Why?

转载 作者:行者123 更新时间:2023-12-04 13:05:32 25 4
gpt4 key购买 nike

我有以下功能:

let hasColumnValue<'columnType> columnName (value: 'columnType) (row: KeyValuePair<int, ObjectSeries<string>>) =
let columnValue =
Series.get columnName row.Value :?> 'columnType

match columnValue with
| value -> true
| _ -> false

默认模式匹配被标记为“永远不会匹配此规则”

=>我不明白为什么

提前致谢

最佳答案

第一个模式总是匹配的,因为它绑定(bind)到变量。如果存在具有相同名称的变量,它将被隐藏。但是,如果名称引用文字 绑定(bind),则如果值等于基础常量值,则模式成功

let x = 1
[<Literal>]
let Three = 3

match 2 with
| Three -> printfn "Three"
| x -> printfn "%d" x
// prints 2

match 3 with
| Three -> printfn "Three"
| x -> printfn "%d" x
// prints Three

在你的情况下,使用相等而不是模式匹配是最清楚的

 let hasColumnValue<'columnType when 'columnType: equality> columnName (value: 'columnType) (row: KeyValuePair<int, ObjectSeries<string>>) =
let columnValue =
Series.get columnName row.Value :?> 'columnType

columnValue = value

关于f# - 这条规则永远不会被匹配到 : Why?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69640977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com