2013-07-30 3 views
-2

C에서 yield 키워드를 읽는 동안 C와 같은 함수 내에서 선언 된 정적 변수를 사용하여 일부 유사성이있는 것으로 나타났습니다.수확량과 정적 로컬 변수의 비교

둘 다 함수 밖에서이 사실을 노출시키지 않고 호출간에 함수의 상태를 저장하는 방법입니다.

첫 번째 질문 : 함수의 상태를 저장하는 방법에있어 두 함수의 차이점은 무엇입니까?

두 번째 질문 : 함수의 상태를 불투명하게 저장하는 디자인상의 의미는 무엇입니까? 나는 수확량에 기반한 몇 가지 "해킹"을 보았습니다.이 해킹은 일어날 재앙처럼 보입니다. 실제로이 디자인의 이점을 누릴 수있는 열거 가능한 컬렉션 외에 어떤 상황이 있습니까?

+1

한 번에 하나의 언어에 대해 생각해 볼 것을 제안합니다. –

+4

나는 당신이 볼 수있는 유사성이 그것을 펴고 있다고 말할 것이다. –

+1

@Grijesh 나는 C와 C를 비교하려고합니다. C++는 C의 수퍼 세트이기 때문에 비교와도 관련이 있습니다. – ose

답변

3

C# yield은 파이썬에서 yield과 매우 유사하게 보입니다. 이면 정적 변수보다 보조 프로세스에 가깝습니다. 함수의 전체 상태가 저장됩니다. (. 위로 옛날에, 방법은 우리가 인텔에 공동 프로세스가 메모리 위치에 에게 스택 포인터를 교환했다 구현 : xchg sp, otherCoprocessStack) 이점에 관해서는

, 그것은 보다 훨씬 더 가벼운 무게이다 별도의 스레드를 정의하고 일부 대기열 메커니즘을 통해 통신합니다. 같은 복잡한 메모리 구조를 반복 할 때 특히 유용합니다. 은 수동으로 스택을 유지해야하는 번거 로움을 피하기 때문입니다.