2016-10-31 4 views
1

配列の要素にアクセスするために、式anArray.[i]を何回か使用しました。F#アクセス配列i番目の要素関数のエラー

しかし、私は非常に非常に単純な関数を作成しようとすると突然、私はエラーが表示されます。

let safeIndexIf anArray i = 
    anArray.[i] 

私はエラーなし...

私はそれは簡単なものだと思ったので、配列のi番目の要素を返す関数を作成する必要がありますが:

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

これはなぜ機能しませんか?私はそのエラーが何を意味するのか知りません。すべて私は、この何回もanArrayの要素にアクセスするためにこのような何かをしたことを知っているので、なぜ私は今回はできませんか?

答えて

7

つまり、コンパイラのタイプの推論では、anArrayが実際に配列であると判断できません。

let safeIndexIf (anArray : array<'a>) i = 
    anArray.[i] 

あなたは型注釈を避けたい場合は、あなたの関数を書き換えてみてください:

エラーメッセージは、型注釈を追加示唆され、あなたはanArrayは、一般的な配列であると言うことは、このような何かを行うことができます同じ振る舞いを持つArray.itemを使用してください。

let safeIndexIf anArray i = 
    Array.item i anArray 
+0

ありがとうございます。意味あり – Nulle

関連する問題