4

タプルの配列を2次元配列に変換するためのより良いアプローチがあるのだろうか?

let list = [|("a", "1"); ("b", "2"); ("c", "3")|];;
let arr = Array2D.init (Array.length list) 2 (fun i j -> if j <> 0 then (fst list.[i]) else (snd list.[i]));;
4

2 に答える 2

1

最も簡単なオプションは関数を使用することであるという @pad に同意しarray2Dます。私は通常、高階関数 ( などSeq.map) よりもシーケンス式を使用することを好むので、おそらく次のように記述します。

let arr =
  array2D [ for char, num in list ->
              [ char; num ] ] 

これは、@pad からの回答と本質的に同じことを行います。によって期待されるデータ構造であるリストのリストを作成しますarray2D(outer を as と書く方が効率的seq { .. }ですが、簡単にするためにリストを使用しました)。

于 2013-05-27T13:48:23.230 に答える