2

この F# 関数を宣言すると、次のようになります。

let extractColumn col (grid : List<Map<string, string>>) =
    List.map (fun row -> row.[col]) grid

コンパイラは文句を言います:

エラー FS0752: 演算子 'expr.[idx]' は、このプログラム ポイントより前の情報に基づく不定型のオブジェクトで使用されています。さらにタイプ制約を追加することを検討してください

ラムダのrowパラメーターに型注釈を追加すると、次のように修正されます。

let extractColumn col (grid : List<Map<string, string>>) =
    List.map (fun (row : Map<string, string>) -> row.[col]) grid

関数のパラメーターrowから型を取得できないのはなぜですか?extractColumngrid

4

1 に答える 1

8

F# の型推論は、左から右、上から下に機能します。

のタイプはパーツgridでは使用できませんList.map (fun row -> row.[col])

パイプ演算子の使用|>:

let extractColumn col (grid : Map<string, string> list) =
    grid |> List.map (fun row -> row.[col])

あなたの例を期待どおりに動作させます。

于 2013-06-27T20:56:09.913 に答える