#f# #pattern-matching
#f# #сопоставление с образцом
Вопрос:
Существует ли сокращение для 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
Я предполагаю, что выражение like match isVertical with
настолько распространено, что существует сокращение, подобное тому, которое у нас есть function
, нет?
Ответ №1:
Да, это просто if
выражение:
let cssClasses =
let cssDefault = [ "tile"; "is-parent" ]
if isVertical then
cssDefault @ [ "is-vertical" ]
else cssDefault
Цитирование из документов F #:
В отличие от других языков,
if...then...else
конструкция представляет собой выражение, а не оператор. Это означает, что он выдает значение, которое является значением последнего выражения в выполняемой ветви.
Ответ №2:
Это немного не по теме, но вы можете создать свой список, используя выражения последовательности, которые, ИМХО, более удобочитаемы для данного варианта использования.
let cssClasses = [
"tile"
"is-parent"
if isVertical then
"is-vertical"
]
Комментарии:
1. я согласен, спасибо!