我手上下面一段代码F#图案相似的分支比空,我应该做完全相同的分支打印一些文本并返回。但是我不知道如何在F#中做这样的条件表达式,以便我可以共享同一个分支。在命令式编程中,我会很轻松地做到这一点,但在F#中,我该怎么做?如何“压缩”在匹配
谢谢
我手上下面一段代码F#图案相似的分支比空,我应该做完全相同的分支打印一些文本并返回。但是我不知道如何在F#中做这样的条件表达式,以便我可以共享同一个分支。在命令式编程中,我会很轻松地做到这一点,但在F#中,我该怎么做?如何“压缩”在匹配
谢谢
如果Status
是记录字段,那么你可以这样做:
match intersection with
| Some { Status = Empty } ->
// Code for empty...
| _ ->
printfn "Please provide an empty intersection for ring placement"
gameState
否则,您可以使用保护:
match intersection with
| Some x when x.Status = Empty ->
// Code for empty...
| _ ->
printfn "Please provide an empty intersection for ring placement"
gameState
在你的第一个代码示例中,如果我需要“Some”(在我的情况下是x)内的内容呢? –
你可以做'Some({Status = Empty} as x)' – Tarmil
哇,这是我真正需要的语法!谢谢! –
什么是'x'的类型在'Some x'中? –
这是一种称为“交集”的类型,其中包含一个称为状态和位置的成员。这里的定义,虽然我不认为这是相关的: 类型Intersection = { 可变状态:状态; Position:Position } –