如何在条件中断言元组

时间:2012-05-17 15:16:38

标签: f#

鉴于元组:

let tuple = (true, 1)

如何在条件中使用此元组? 像这样:

if tuple.first then //doesnt work

if x,_ = tuple then // doesnt work

我不想这样做:

let isTrue value = 
   let b,_ = value
   b

if isTrue tuple then // boring

有没有一种很好的方法来评估条件中的元组值而不创建单独的函数?

3 个答案:

答案 0 :(得分:7)

fst功能可以帮助您。

  

返回元组的第一个元素

一个例子:

let tuple = (true, 1)
if fst tuple then
    //whatever

第二个元素还有一个snd

另一种方法是使用pattern matching

let tuple = (true, 1)

let value = 
    match tuple with
    | (true, _) -> "fst is True"
    | (false, _) -> "fst is False"

printfn "%s" value

这可以让你在更复杂的场景中匹配,这是F#中一个非常强大的构造。有关示例,请查看MSDN Documentation中的元组模式。

答案 1 :(得分:3)

您正在寻找的功能是“fst”。

let v = (true, 3)
if fst v then "yes" else "no"

“fst”将获得元组的前半部分。 “snd”将获得下半场。

有关其他信息,请MSDN has information here

答案 2 :(得分:2)

您可以使用fst功能:

if tuple |> fst then
    ...