이것이 더 많은 이유입니다. 여기 간다.C# 7.0의 로컬 함수가 foreach 또는 루프와 다른 점은 무엇입니까?
C# 7.0에는 "로컬 기능"이라는 새로운 기능이 추가되었습니다. 다음은 코드 스 니펫입니다.
public int Fibonacci(int x)
{
if (x < 0) throw new ArgumentException("Less negativity please!", nameof(x));
return Fib(x).current;
(int current, int previous) Fib(int i)
{
if (i == 0) return (1, 0);
var (p, pp) = Fib(i - 1);
return (p + pp, p);
}
}
내가 이해하지 못하는 것은 동일한 방법에 대한 재귀 호출입니다. 우리는 정상적인 foreach로 이것을 쉽게 달성 할 수 있습니다. 그렇다면 왜 지역적 기능인가.
MSDN는 반복자로 구현
방법은 일반적으로 열심히 호출시 인수를 확인하기위한 비 반복자 래퍼 방법이 필요했다. (반복기 자체는 MoveNext가 호출 될 때까지 실행되지 않습니다.)
개념을 이해하는 데 도움이 필요합니다.
로컬 함수를 사용하여 모든 종류의 작업을 수행 할 수 있습니다. 재귀적일 필요는 없습니다. –
예 @ZoharPeled, 재귀에만 국한되지만이 예제를 사용한 이유는 무엇입니까? 그냥 궁금해서. – pordi
'Fibonacci'라는 함수는 입력을 제어하는 데 사용됩니다. 'Fib' imho라는 로컬 함수는 로직의 복잡한 코드를 캡슐화하는데 사용됩니다.이 경우에는 유효성 검사를 거치지 않고 재귀 호출을 사용합니다. 당신은 'Fib'을'로컬 기능이라는 확실성 '없이 호출 할 수 없습니다. – bradbury9