2013-07-15 2 views
1

그 밖의 아무것도 반환되지 않으면 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 

답변

4

이 재귀 함수의 중지 사례 | [] -> printfn "% s"str

단위를 반환하므로 함수가 하나의 단위를 반환합니다. 다른 브랜치는 재귀 적으로 만 동일한 함수를 호출합니다.

2

두 재귀 분기를 분석하는 경우 반환 유형이 동일해야합니다.

제 분기와 processList

제 2 분기 복귀 unit의 반환 값 printfn의 반환형 일부 반환형 'a있다. 당신은 아마 갖고 싶어 단지

| [] -> str 

또는 더 복잡한 경우에, 당신은

| [] -> sprintfn "%s" str 
를 다음과 같이 형식화 한 문자열을 반환 sprintf을 사용할 수 있습니다

관련 문제