但是在F#的世界裡, (a, b, c)就會被當成數對囉。看一下下面的例子:
// Tuple of two integers. ( 1, 2 ) // Triple of strings. ( "one", "two", "three" ) // Tuple of unknown types. ( a, b ) // Tuple that has mixed types. ( "one", "1", "2.0" ) // Tuple of integer expressions. ( a + 1, b + 1) |
> let tuple = (42, "Hello World");; val tuple : int * string = (42, "Hello World") > let (num, str) = tuple;; val str : string = "Hello World" val num : int = 42 |
這裡還有一件很有趣的事情, 在上一個例子中組合裡的東西, 型別是 int * string, 也就是他的型別是一個以兩個不同類別所構成的, 那如何讓一個function回傳一個組合呢?
> let myFun a b = - let x = a + b - let y = a - b - (x, y);; val myFun : int -> int -> int * int |
Tuple當 然不只有這樣的功能, 在matching pattern時, 他也可以有所作用, 當然還沒有學過matcing, 等解到matcing時, 我們自然就會看到了。下面是例子, 先不解釋了…
let function1 x = match x with | (var1, var2) when var1 > var2 -> printfn "%d is greater than %d" var1 var2 | (var1, var2) when var1 < var2 -> printfn "%d is less than %d" var1 var2 | (var1, var2) -> printfn "%d equals %d" var1 var2 function1 (1,2) function1 (2, 1) function1 (0, 0) |
沒有留言:
張貼留言