本文概述
- 常量值的F#模式匹配示例
- 使用对象示例进行F#模式匹配
- F#条件模式匹配示例
- 列表中的F#模式匹配
- 元组中的F#模式匹配
常量值的F#模式匹配示例【F#模式匹配】你可以在模式匹配中使用常量值, 如以下示例所示。
let patternMatch a = match a with| 1 ->
"You entered 1"| 2 ->
"You entered 2"| _ ->
"You entered something other then 1 or 2"printf "%s" (patternMatch 2)
输出:
You entered 2
使用对象示例进行F#模式匹配你可以使用模式中的对象来搜索输入的最佳匹配。
let objectPatternMatch (a:obj) = match a with | :? int ->
"You entered integer value" | :? float ->
"You entered float value" | _ ->
"You entered something other than integer or float"printfn "%s" (objectPatternMatch 10)
输出:
You entered integer value
F#条件模式匹配示例以下程序显示了如何使用条件模式匹配。
let conditionalPatternMatching x y = match (x, y) with| (x, y) when x>
y ->
printfn "X is greater than y"| (x, y) when x<
y ->
printfn "Y is greater than x"| _ ->
printf "X = Y"conditionalPatternMatching 20 10
输出:
X is greater than y
列表中的F#模式匹配在F#中, 你可以在列表中应用模式匹配。让我们来看一个例子。
let listPatternMatching list = match list with| [var] ->
var| [var1;
var2]->
var1+var2printf "%d" (listPatternMatching [2;
1])
输出:
3
元组中的F#模式匹配你也可以在元组中使用模式匹配。让我们来看一个例子。
let tuplePatternMatching tuple =match tuple with| (0, 0) ->
printfn "Both values zero."| (0, var2) ->
printfn "First value is 0 in (0, %d)" var2| (var1, 0) ->
printfn "Second value is 0 in (%d, 0)" var1| _ ->
printfn "Both nonzero."tuplePatternMatching (0, 1)
输出:
First value is 0 in (0, 1)