Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F# 将区分的并集大小写转换为字符串_F#_Discriminated Union - Fatal编程技术网

F# 将区分的并集大小写转换为字符串

F# 将区分的并集大小写转换为字符串,f#,discriminated-union,F#,Discriminated Union,我正在用F做一个假的项目——我对F或函数式编程不太熟练,而且主要做前端格式化。我试图根据分配给它的类变量设置项目的颜色。我在将其转换为字符串或在if语句中使用时遇到问题。我知道这是一个长期的机会,但有没有任何F开发人员可能有这方面的经验 班级: type State = | New | Open | Closed | Archived 要重新存储的项目: td [ ClassName "text-center" ] [ statusTag

我正在用F做一个假的项目——我对F或函数式编程不太熟练,而且主要做前端格式化。我试图根据分配给它的类变量设置项目的颜色。我在将其转换为字符串或在if语句中使用时遇到问题。我知道这是一个长期的机会,但有没有任何F开发人员可能有这方面的经验

班级:

type State =
    | New
    | Open
    | Closed
    | Archived
要重新存储的项目:

  td [ ClassName "text-center" ] [ statusTag appt.state ]

我主要是一名C开发人员,因此F的工作方式非常陌生。通常我只需要创建一个if语句,并使用.ToString将状态插入其中,然后使用该语句重新设置样式,但我不知道如何使用F进行设置。任何帮助都将不胜感激。

通常的方法是使用匹配表达式检查您的值:

let stateToColor state = 
    match state with
    | New -> "red"
    | Open -> "green"
    | Closed -> "blue"
    | Archived -> "yellow"
当然,您也可以使用if表达式,就像在C中一样:

let stateToColor state =
    if state = New then "red"
    elif state = Open then "green"
    elif state = Closed then "blue"
    else "yellow"

但后者的安全性稍差:如果您后来添加了另一个状态,而忘记将其添加到stateToColor,则如果您使用匹配表达式,编译器将捕获您,但不会捕获if/then/else。

通常的方法是使用匹配表达式检查您的值:

let stateToColor state = 
    match state with
    | New -> "red"
    | Open -> "green"
    | Closed -> "blue"
    | Archived -> "yellow"
当然,您也可以使用if表达式,就像在C中一样:

let stateToColor state =
    if state = New then "red"
    elif state = Open then "green"
    elif state = Closed then "blue"
    else "yellow"

但后者的安全性稍差:如果您稍后添加另一个状态并忘记将其添加到stateToColor,则如果您使用匹配表达式,编译器将捕获您,但不会捕获if/then/else。

值得一提的是,您经常会看到let stateToColor State=match State with。。。缩短为let stateToColor=function…值得一提的是,您经常会看到let stateToColor state=match state with。。。缩短为让stateToColor=函数。。。