2012-05-17 1 views
3

Учитывая кортеж:, как утверждают кортеж в условном

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 

Есть хороший способ оценить значение кортежа внутри условного без создавая отдельную функцию?

ответ

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 #. Взгляните на шаблон Tuple в файле MSDN Documentation для нескольких примеров.

3

Функция, которую вы ищете, является «fst».

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

"fst" получит первую половину кортежа. "snd" получит вторую половину.

Дополнительную информацию см. MSDN has information here.

2

Вы можете использовать функцию fst:

if tuple |> fst then 
    ... 
Смежные вопросы