配列を渡して値を出力できる単純な F# 関数を作成しようとしていますが、問題が発生しています。これが私がこれまでに持っているものです:
let a = [| a; b; c; d |];;
let f arrayFunction (string[] array) = function
for b=0 to array.Length
Console.WriteLine(array.[]);;
パラメーターを定義するための F# 構文は、C# 構文とは逆です。F# では、パラメーターの名前が最初に来て、次に型が続きます (2 つを区切るためにコロンを使用します)。
ここでもキーワードは必要ありませんfunction
。通常のlet
バインディングだけです。これfunction
は、匿名のパターン マッチング関数を作成するためのものです。ただし、ループdo
の行末にa を追加する必要があります。for
最後に、to
F#for
ループ内の の後の値は包括的であるため、配列の長さから 1 を減算する必要があります。そうしないと、IndexOutOfRangeException が発生します。
関数は次のように記述する必要があります。
let a = [| a; b; c; d |];;
let f arrayFunction (array : string[]) =
for b = 0 to array.Length - 1 do
Console.WriteLine (array.[b]);;
ジャックの答えは正確ですが、F# にはこれらの種類のタスクを実行するための組み込み関数があります。この例では、配列を Array.iter に送信することができます。これは、各アイテムを反復処理し、アイテムを文字列 -> ユニット関数に渡します。
したがって、例は次のようになります。
let a = [| "a"; "b"; "c"; "d" |];;
let f arrayFunction (array : string[]) =
array |> Array.iter arrayFunction;;
a |> f Console.WriteLine;;