1

コンパイラがこのエラーを表示する理由を誰かが説明できますか

型の不一致。'a []->文字列
が必要ですが、' a[]->'a[]が指定されてい
ますタイプ'string'はタイプ''a[]'と一致しません

このコードスニペット:

let rotate s: string = 
  [|for c in s -> c|] 
  |> Array.permute (function | 0 -> (s.Length-1) | i -> i-1)

以下のものはうまくコンパイルされますが:

let s = "string"
[|for c in s -> c|] 
|> Array.permute (function | 0 -> (s.Length-1) | i -> i-1)
4

1 に答える 1

5

最初のスニペットではrotate、戻り値の型が の関数を定義していますstring

次のように変更してみてください。

let rotate (s: string) = 
  [|for c in s -> c|] 
  |> Array.permute (function | 0 -> (s.Length-1) | i -> i-1)

この形式では、1 つの文字列引数 (それが必要だと思います) と推論された戻り値の型を持つ関数を定義します。

于 2013-03-12T22:30:24.840 に答える