Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F# 为什么这个公式返回一个单位?_F#_Unit Type - Fatal编程技术网

F# 为什么这个公式返回一个单位?

F# 为什么这个公式返回一个单位?,f#,unit-type,F#,Unit Type,我知道F#函数返回一个单位,如果没有其他返回,但是这个函数返回一个字符串。有人能帮我理解为什么它返回一个单位吗 let rec processList aList str = match aList with | h::t -> let x = Regex.Replace(str, h, h, RegexOptions.IgnoreCase) processList t x | [] -> printfn "%s"

我知道F#函数返回一个单位,如果没有其他返回,但是这个函数返回一个字符串。有人能帮我理解为什么它返回一个单位吗

let rec processList aList str = 
    match aList with
    | h::t  ->  let x = Regex.Replace(str, h, h, RegexOptions.IgnoreCase)
                processList t x
    | []    ->  printfn "%s" str

此递归函数的停止情况 |[]->printfn“%s”str


返回单位,因此函数返回单位。另一个分支只递归调用同一个函数。

此递归函数的停止情况 |[]->printfn“%s”str


返回单位,因此函数返回单位。另一个分支只递归地调用相同的函数。

如果我们分析这两个递归分支,它们的返回类型必须相同

第一个分支有一些返回类型
'a
,它是
processList

第二个分支返回
unit
,因为这是
printfn
的返回类型。你可能只想

| [] -> str
或者对于更复杂的情况,可以使用
sprintf
返回格式化字符串,如下所示

| [] -> sprintfn "%s" str

如果我们分析这两个递归分支,它们的返回类型必须相同

第一个分支有一些返回类型
'a
,它是
processList

第二个分支返回
unit
,因为这是
printfn
的返回类型。你可能只想

| [] -> str
或者对于更复杂的情况,可以使用
sprintf
返回格式化字符串,如下所示

| [] -> sprintfn "%s" str