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