gpt4 book ai didi

f# - 文字属性不起作用

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

在阅读完克里斯对F# - public literal的回答以及http://blogs.msdn.com/b/chrsmith/archive/2008/10/03/f-zen-the-literal-attribute.aspx上的博客文章后,我不明白为什么以下内容不起作用:

[<Literal>]
let one = 1

[<Literal>]
let two = 2

let trymatch x =
match x with
| one -> printfn "%A" one
| two -> printfn "%A" two
| _ -> printfn "none"


trymatch 3

尽管我认为不应该这样做,但它始终打印“3”。我在这里看不到什么?

最佳答案

我认为字面量必须为大写。以下工作正常:

[<Literal>]
let One = 1
[<Literal>]
let Two = 2

let trymatch x =
match x with
| One -> printfn "%A" One
| Two -> printfn "%A" Two
| _ -> printfn "none"


trymatch 3

另外,如果您想要一个很好的通用解决方案而不使用文字,可以定义一个参数化的 Activity 模式,如下所示:
let (|Equals|_|) expected actual = 
if actual = expected then Some() else None

然后写
let one = 1
let two = 2

let trymatch x =
match x with
| Equals one -> printfn "%A" one
| Equals two -> printfn "%A" two
| _ -> printfn "none"

关于f# - 文字属性不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3890037/

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