-1

これは、このSO-postに対するフォローアップの質問です。

このコード ブロックを考えると (csvData1 は .csv ファイルです)。

let mappedSeq1 = seq { for csvRow in csvData1 do yield (csvRow.[2], csvRow.[5]) }

for x in mappedSeq1 do
    printfn "%A" x

xシーケンスの各要素をアンパックしたくない場合はどうすればよいでしょうかy。andxを使用できるように、シーケンスに変換するにはどうすればよいですか?Seq.fstSeq.snd

これらの要素を解凍できることはわかっています。x私の質問は、特にそれが System.Tupleであることを考えると、これを行う別の方法を見つけることです。

4

2 に答える 2

4

xは 2 つの s のタプルですstring(これは私が想定しcsvRow.[i]ているものです) yieldforそして、ループ内でそれを直接分解できます。

for (x,y) in mappedSeq1 do
   printfn "%s - %s" x y

または、x を分解したくない場合はfst xorを使用できます。snd x

于 2016-09-14T17:51:27.447 に答える
0

あなたのコードは現在、行を読み取り、列 2 と列 5 のタプルを生成するシーケンスを作成しています。

Row0Col2; のシーケンスを返したい場合。Row0Col5; Row1Col2; Row1Col5 (2 つの列は同じ型である必要があります)、次に使用します

yield! [ csvRow.[2], csvRow.[5] ]

または、シーケンスのシーケンスが必要な場合 - [Row0Col2; Row0Col5]; [Row1Col2; Ro1Col5]、次に使用

yield [ csvRow.[2]; csvRow.[5] ]

yield!リストから個々のアイテムをyield生成しますが、リストを順番に生成するだけです。

于 2016-09-15T08:53:27.213 に答える