如何将判别并集作为参数传递到函数中?F#
如果定义的类型是有区别的并集,如何在函数中传递参数?例如,我想传入一个Color类型的对象,其中colorB设置为“blue”。在函数中,我想检查colorB是否设置为蓝色如何将判别并集作为参数传递到函数中?F#,f#,F#,如果定义的类型是有区别的并集,如何在函数中传递参数?例如,我想传入一个Color类型的对象,其中colorB设置为“blue”。在函数中,我想检查colorB是否设置为蓝色 type Color = ColorA of string | ColorB of string let IsColorBlue (a:Color): bool = match a with | a -> if a.ColorB = "blue" then true // <
type Color = ColorA of string | ColorB of string
let IsColorBlue (a:Color): bool =
match a with
| a -> if a.ColorB = "blue" then true // <- How to check if ColorB is blue ?
IsColorBlue (Color-Object) // <- How do I call this?
type Color=string的ColorA | string的ColorB
设IsColorBlue(a:颜色):bool=
匹配
|a->如果a.ColorB=“blue”则为true//要使用模式匹配检查aColor
是否为具有特定值的ColorB
,可以使用以下语法:
let IsColorBlue(a:Color):bool=
匹配
|颜色B“蓝色”->正确
|_u->false
要创建Color
类型的值,可以编写ColorA“some”
或ColorB“some”
。例如:
IsColorBlue(ColorB“blue”)//true
IsColorBlue(ColorB“红色”)//假-非蓝色
IsColorBlue(ColorA“蓝色”)//假-非ColorB
首先,您需要匹配您有一个ColorB
而不是ColorA
,这是您在代码中没有做的。另外,请提供一个正确的,您没有定义Color对象
如果您需要检查两个参数,该怎么办?比如,如果ColorA=blue&ColorB=blue同时出现。如何调用函数&如何使用模式匹配编写if-else?