gpt4 book ai didi

f# - 如何使这个匹配表达式更简洁?

转载 作者:行者123 更新时间:2023-12-02 08:35:34 26 4
gpt4 key购买 nike

通过编写二十一点来学习 F#。我有这些类型:

type Suit = 
| Heart = 0
| Spade = 1
| Diamond = 2
| Club = 3

type Card =
| Ace of Suit
| King of Suit
| Queen of Suit
| Jack of Suit
| ValueCard of int * Suit

我有这个函数(暂时忽略 ace 可以有 2 个不同的值):

let NumericValue =
function | Ace(Suit.Heart) | Ace(Suit.Spade) | Ace(Suit.Diamond) | Ace(Suit.Club) -> 11
| King(Suit.Heart) | King(Suit.Spade)| King(Suit.Diamond) | King(Suit.Club) | Queen(Suit.Heart) | Queen(Suit.Spade)| Queen(Suit.Diamond) | Queen(Suit.Club) | Jack(Suit.Heart) | Jack(Suit.Spade)| Jack(Suit.Diamond) | Jack(Suit.Club) -> 10
| ValueCard(num, x) -> num

有什么方法可以包含范围之类的吗?就像 [Ace(Suit.Heart) .. Ace(Suit.Club)]。或者更好的 Ace(*)

最佳答案

您需要一个通配符模式。规范 (§7.4) 说:

The pattern _ is a wildcard pattern and matches any input.

let numericValue = function 
| Ace _-> 11
| King _
| Queen _
| Jack _ -> 10
| ValueCard(num, _) -> num

关于f# - 如何使这个匹配表达式更简洁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21937066/

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