鉴于元组:
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
有没有一种很好的方法来评估条件中的元组值而不创建单独的函数?
答案 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
...