2013-03-12 38 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