2013-03-12 56 views
1

有人可以解释为什么编译器给我这个错误奇怪的(?)这个函数类型不匹配错误

类型不匹配。期待 '一个[] - >串
但给予 ' 一个[] - > '一个[]
类型 '字符串' 不匹配的类型 '' 一个[]'

在此代码段:

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) 

回答

5

你的第一个片段定义functi在rotate上,返回类型为string

尝试将其更改为:

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

在这种形式定义一个字符串参数的函数(我想这是你想要的),并推断返回类型。

+0

谢谢,就是这样。我以为我尝试了括号,但我错了。 – 2013-03-12 23:06:41