问题描述
我正在使用F#进行FAKE项目-我不太熟练F#或功能优先的编程,并且主要进行前端格式化。我试图根据分配给它的类变量设置项目的颜色。我在将其转换为字符串或在if语句中使用它时遇到问题。我知道这是一个长期的尝试,但是那里有F#开发人员可能在这方面有经验吗?
课程:
type State =
| New
| Open
| Closed
| Archived
要重新着色的项目
td [ ClassName "text-center" ] [ statusTag appt.state ]
我主要是C#开发人员,所以F#做事情的方式非常陌生。通常,我只是创建一个if语句,然后使用.ToString()将状态插入其中,然后使用它来重新设置样式,但对于使用F#进行操作却感到困惑。任何帮助将不胜感激。
解决方法
通常的方法是使用match
表达式检查您的值:
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"
尽管后者不太安全:如果您以后添加另一个State
并忘记也将其添加到stateToColor
中,那么如果您使用match
表达式,编译器将捕获您,但不适用于if/then/else
。