簡單的問題。F#爲什麼我會得到這種返回類型?
我有一個函數,它需要兩個字符串和一個int,並返回一個新的字符串和n
行,並在兩個輸入字符串之間交替。
let rec f s1 s2 n = function
| s1 when n > 0 -> s1 + "\n" + f s2 s1 (n-1)
| s2 when n > 0 -> s2 + "\n" + f s1 s2 (n-1)
調用它
f "ab" "cd" 4
應該返回ab\ncd\nab\ncd
目前,我得到一個錯誤,在我的方法,我不知道爲什麼。任何提示?
UPDATE:
事實證明,它是通過使用匿名function
引起的。它改變到match
表達解決它:
let rec f s1 s2 n =
match s1 with
| _ when n <= 0 -> ""
| s1 when n > 0 -> s1 + "\n" + f s2 s1 (n-1)
| s2 when n > 0 -> s2 + "\n" + f s1 s2 (n-1)
更新2:上述功能可能是在正確方向邁出的一步,但下面的實施是通過TheQuickBrownFox指出正確的。
let rec f s1 s2 n =
if n <= 0 then ""
else s1 + "\n" + f s2 s1 (n-1)
我更新了你的更新後的答案。 – TheQuickBrownFox