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)

在这种形式中,您定义了一个带有一个字符串参数的函数(我想这就是您想要的)和推断的返回类型。

于 2013-03-12T22:30:24.840 回答