또한, 튜플 리터럴을 이용하여 튜플을 만드는 방법을 알았으므로 MinMax 메서드를 완전히 구현할 수도 있다. 다음에 그 예를 나타냈다.
예제 11-1 정숫값의 시퀀스로부터 최솟값과 최댓값을 단일 튜플로 반환하는 예 ▶ MinMax1.cs
static (int min, int max) MinMax( ----- 개별 요소에 이름을 명명한 튜플 타입을 반환
IEnumerable<int> source)
{
using (var iterator = source.GetEnumerator())
{
if (!iterator.MoveNext()) ----- 빈 시퀀스는 금지
{
throw new InvalidOperationException(
"Cannot find min/max of an empty sequence");
}
➊
int min = iterator.Current;
int max = iterator.Current;
while (iterator.MoveNext())
{
➋
min = Math.Min(min, iterator.Current);
max = Math.Max(max, iterator.Current);
}
return (min, max); ----- 최솟값, 최댓값을 튜플로 생성
}
}
➊ 최솟값과 최댓값을 추적하기 위한 일반 int 변수
➋ 새로운 최솟값과 최댓값으로 변수를 갱신