49

F#コードには、タプルがあります。

let myWife=("Tijana",32)

タプルの各メンバーに個別にアクセスしたい。たとえば、これは私が達成したいことはできません

Console.WriteLine("My wife is {0} and her age is {1}",myWife[0],myWife[1])

このコードは明らかに機能しません。私が達成したいことを収集できると思います。

4

4 に答える 4

90

あなたは彼女の年齢を不変にすることによってあなたの妻が老化するのを防ぎたいですか?:)

2つのメンバーのみを含むタプルの場合、ペアのメンバーを抽出できfstますsnd

let wifeName = fst myWife;
let wifeAge = snd myWife;

より長いタプルの場合、タプルを他の変数にアンパックする必要があります。例えば、

let _, age = myWife;;
let name, age = myWife;;
于 2009-03-01T18:33:43.330 に答える
24

もう 1 つの非常に便利な点は、パターン マッチング ("let" バインディングを使用して要素を抽出する場合と同様) を他の状況で使用できることです。たとえば、関数を作成する場合などです。

let writePerson1 person =
  let name, age = person
  printfn "name = %s, age = %d" name age

// instead of deconstructing the tuple using 'let', 
// we can do it in the declaration of parameters
let writePerson2 (name, age) = 
  printfn "name = %s, age = %d" name age

// in both cases, the call is the same
writePerson1 ("Joe", 20)
writePerson2 ("Joe", 20)
于 2009-03-01T22:05:08.457 に答える
17

関数fstを使用して最初の要素を取得し、sndを使用して2番目の要素を取得できます。独自の「3番目の」関数を作成することもできます。

let third (_, _, c) = c

詳細はこちら:F#言語リファレンス、タプル

于 2010-07-16T14:32:57.553 に答える