作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果我有一个有多个值共享一个子项的可区分联合( Apple
和 MoreApples
都具有类型 Apple
)...
type Apples =
| GrannySmith
| Gala
type Fruit =
| Apple of Apples
| MoreApples of Apples
| Banana
let speakFruit = function
| Apple GrannySmith
| MoreApples GrannySmith -> "granny smith"
| Apple Gala
| MoreApples Gala -> "gala"
| Banana -> "banana"
let speakFruit2 = function
| _ GrannySmith -> "granny smith"
| _ Gala -> "gala"
| Banana -> "banana"
最佳答案
我认为使用单一模式没有什么好的方法可以做到这一点,但是您可以定义一个事件模式,该模式将为您提供合并两种苹果的数据的另一种视角:
let (|AnyApple|Banana|) = function
| Apple a | MoreApples a -> AnyApple a
| Banana -> Banana
Banana
定义 - 您可能应该使用另一个名称以避免混淆,但其余的保持不变。现在您可以使用
AnyApple
进行模式匹配:
let speakFruit = function
| AnyApple GrannySmith -> "granny smith"
| AnyApple Gala -> "gala"
| Banana -> "banana"
关于f# - 匹配受歧视 child 的工会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41807027/
我一直在使用标记的联合类型来处理 typescript 歧视,但我遇到了一些奇怪的事情。如果我打开实际的对象属性,一切都会按预期工作。但是如果我使用解构,typescript 会报错。我认为它与编译时
我正在创建一个动态小部件,它可以是空的也可以是已填充的。它应该默认为空。当populated={true} , 我想要 totalGross和 totalNet需要的值。否则,不应允许使用这 2 个
我是一名优秀的程序员,十分优秀!