codecamp

F#元组

元组是一个逗号分隔的值集合。 这些用于创建特殊数据结构,将相关值组合在一起。

例如,(“Zara Ali”,“Hyderabad”,10)是具有两个字符串值和一个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#有两个内置函数fstandsnd,它返回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"
F#选项
F#记录
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }