如何在条件中断言元组

Pau*_*icz 3 f#

鉴于元组:

let tuple = (true, 1)
Run Code Online (Sandbox Code Playgroud)

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

if tuple.first then //doesnt work
Run Code Online (Sandbox Code Playgroud)

要么

if x,_ = tuple then // doesnt work
Run Code Online (Sandbox Code Playgroud)

我不想这样做:

let isTrue value = 
   let b,_ = value
   b

if isTrue tuple then // boring
Run Code Online (Sandbox Code Playgroud)

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

vcs*_*nes 7

fst功能可以帮助你在这里.

返回元组的第一个元素

一个例子:

let tuple = (true, 1)
if fst tuple then
    //whatever
Run Code Online (Sandbox Code Playgroud)

还有snd第二个元素.

另一种方法是使用模式匹配:

let tuple = (true, 1)

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

printfn "%s" value
Run Code Online (Sandbox Code Playgroud)

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