gpt4 book ai didi

functional-programming - 有没有一种方法可以检查 F# 中一个模式中的嵌套选项值?

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

假设我们有以下类型:

type Message {
text : Option<string>
}

type Update {
msg : Option<Message>
}

如何在一行中匹配它,就像在 C# 中使用 null 条件运算符,即 update?.msg?.text

有没有办法做到这一点?:

match msg, msg.text with 
| Some msg, Some txt -> ...
| None -> ...

因为我不想编写 2 个嵌套匹配表达式。

最佳答案

您有两种记录类型(示例中缺少“=”)。要匹配某些 Update 类型的变量,您可以执行以下操作:

type Message = { text : Option<string> }

type Update = { msg : Option<Message> }

let u = {msg = Some({text = Some "text"})}

//all 3 possible cases
match u with
| {msg = Some({text = Some t})} -> t
| {msg = Some({text = None})} -> ""
| {msg = None} -> ""

关于functional-programming - 有没有一种方法可以检查 F# 中一个模式中的嵌套选项值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62086547/

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