我手上下面一段代碼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 } –