有人可以解释为什么编译器会给我这个错误
类型不匹配。期待一个 '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)
答案 0 :(得分:5)
您的第一个代码段定义了函数rotate
,其返回类型为string
。
尝试将其更改为:
let rotate (s: string) =
[|for c in s -> c|]
|> Array.permute (function | 0 -> (s.Length-1) | i -> i-1)
在这种形式中,你定义一个带有一个字符串参数的函数(我想这就是你想要的)和推断的返回类型。