ras*_*asx 5 f# pattern-matching
match这里的表达式有简写吗isVertical?
let bulmaContentParentTile isVertical nodes =
let cssClasses =
let cssDefault = [ "tile"; "is-parent" ]
match isVertical with
| true -> cssDefault @ [ "is-vertical" ]
| _ -> cssDefault
div [ attr.classes cssClasses ] nodes
Run Code Online (Sandbox Code Playgroud)
我认为像这样的表达方式match isVertical with是如此常见,以至于有一个类似于我们的 for 的简写function,不是吗?
是的,这只是一个if- 表达式:
let cssClasses =
let cssDefault = [ "tile"; "is-parent" ]
if isVertical then
cssDefault @ [ "is-vertical" ]
else cssDefault
Run Code Online (Sandbox Code Playgroud)
引用 F#文档:
与其他语言不同,该
if...then...else构造是一个表达式,而不是一个语句。这意味着它会产生一个值,该值是执行的分支中最后一个表达式的值。
这有点偏离主题,但您可以使用序列表达式构建列表,恕我直言,对于此用例来说,序列表达式更具可读性。
let cssClasses = [
"tile"
"is-parent"
if isVertical then
"is-vertical"
]
Run Code Online (Sandbox Code Playgroud)