튜플을 이용하면 이처럼 두 요소를 변경할 때도 한 번의 할당 문으로 충분하다. IL 수준에서 살펴보면 여전히 임시 변수가 존재할지라도 최소한 내 눈에는 이 코드가 훨씬 아름답게 보인다.
예제 11-6 튜플을 이용한 피보나치 수열 ▶ FibonacciWithTuples.cs
static IEnumerable<int> Fibonacci()
{
var pair = (current: 0, next: 1);
while (true)
{
yield return pair.current;
pair = (pair.next, pair.current + pair.next);
}
}
지금까지의 코드를 온전히 이해했다면, 임의의 시퀀스를 생성할 수 있도록 더욱 일반화된 메서드를 작성하고 이를 이용하여 피보나치 수열을 생성하도록 코드를 작성하고 싶을 것이다. 다음 예는 인수 값을 변경하여 다양한 형태의 시퀀스를 생성할 수 있도록 일반화된 GenerateSequence 메서드를 사용했다.