简单的问题。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