F# - 元组

元组是以逗号分隔的值集合.这些用于创建临时数据结构,将相关值组合在一起.

例如,("Zara Ali","Hyderabad",10)是一个带有两个字符串的3元组值和一个int值,它具有类型(string * string * int).

元组可以是对,三元组等,具有相同或不同的类型.

此处提供了一些示例 :

// Tuple of two integers.
( 4, 5 )

// Triple of strings.
( "one", "two", "three" )

// Tuple of unknown types.
( a, b )

// Tuple that has mixed types.
( "Absolute Classes", 1, 2.0 )

// Tuple of integer expressions.
( a * 4, b + 7)

示例

此程序具有以下功能:四个浮点值的元组并返回平均值:

let averageFour (a, b, c, d) =
   let sum = a + b + c + d
   sum / 4.0

let avg:float = averageFour (4.0, 5.1, 8.0, 12.0)
printfn "Avg of four numbers: %f" avg

编译并执行程序时,它会产生以下输出 :

Avg of four numbers: 7.275000

访问单个元组成员

元组的各个成员可以使用模式匹配进行评估和打印.

以下示例说明了概念 :

示例

let display tuple1 =
   match tuple1 with
   | (a, b, c) -> printfn "Detail Info: %A %A %A" a b c

display ("Zara Ali", "Hyderabad", 10 )

编译并执行程序时,它会产生以下输出 :

Detail Info: "Zara Ali" "Hyderabad" 10

F#有两个内置函数, fst snd,,它们返回第一个和第二个项目在2元组中.

以下示例说明概念 :

示例

printfn "First member: %A" (fst(23, 30))
printfn "Second member: %A" (snd(23, 30))

printfn "First member: %A" (fst("Hello", "World!"))
printfn "Second member: %A" (snd("Hello", "World!"))

let nameTuple = ("Zara", "Ali")

printfn "First Name: %A" (fst nameTuple)
printfn "Second Name: %A" (snd nameTuple)

编译并执行程序时,它会产生以下输出 :

First member: 23
Second member: 30
First member: "Hello"
Second member: "World!"
First Name: "Zara"
Second Name: "Ali"