다음을 통해 공유


개념 및 용어(기능 변환)(LINQ to XML)

이 문서에서는 순수 기능 변환의 개념과 용어를 소개합니다. 데이터 변환에 대한 기능 변환 접근 방식은 기존의 명령적 프로그래밍보다 프로그래밍이 더 빠르고 표현적이며 디버그 및 유지 관리가 더 쉬운 코드를 생성합니다.

이 섹션의 문서는 기능 프로그래밍을 완전히 설명하기 위한 것이 아닙니다. 대신, 이러한 문서에서는 XML을 한 셰이프에서 다른 셰이프로 쉽게 변환할 수 있는 몇 가지 기능 프로그래밍 기능을 식별합니다.

순수 함수 변환이란?

순수 함수 변환에서 순수 함수라고 하는 함수 집합은 구조화된 데이터 집합을 원래 형식에서 다른 형식으로 변환하는 방법을 정의합니다. "pure"라는 단어는 함수를 작성할 수 있음을 나타내며, 다음과 같이 구성되어야 합니다.

  • 자체 포함되므로 프로그램의 나머지 부분과 얽히거나 상호 종속되지 않고 자유롭게 정렬하고 다시 정렬할 수 있습니다. 순수한 변환은 환경에 대한 지식이나 영향을 주지 않습니다. 즉, 변환에 사용되는 함수에는 부작용이 없습니다.
  • 상태 비정상이므로 동일한 입력에서 동일한 함수 또는 특정 함수 집합을 실행하면 항상 동일한 출력이 발생합니다. 순수 변환에는 이전에 사용한 메모리가 없습니다.

중요합니다

이 자습서의 나머지 부분에는 "순수 함수"라는 용어가 특정 언어 기능이 아닌 프로그래밍 접근 방식을 나타내기 위해 일반적으로 사용됩니다.

순수 함수는 C#의 메서드 및 Visual Basic의 함수로 구현되어야 합니다.

순수 함수를 C++의 순수 가상 메서드와 혼동해서는 안 됩니다. 후자는 포함하는 클래스가 추상이며 메서드 본문이 제공되지 않음을 나타냅니다.

함수 프로그래밍

함수형 프로그래밍 은 순수 함수 변환을 직접 지원하는 프로그래밍 방법입니다.

지금까지 ML, Scheme, Haskell 및 F#과 같은 범용 기능 프로그래밍 언어는 주로 학계에 관심을 가지고 있었습니다. C# 및 Visual Basic에서 순수 함수 변환을 작성하는 것이 항상 가능했지만, 이렇게 하기 어려운 경우 대부분의 프로그래머에게 매력적인 옵션이 되지는 않았습니다. 그러나 이러한 언어의 최신 버전에서는 람다 식 및 형식 유추와 같은 새로운 언어 구문을 사용하면 기능 프로그래밍이 훨씬 쉽고 생산적입니다.

기능 프로그래밍에 대한 자세한 내용은 함수형 프로그래밍과 명령적 프로그래밍을 참조하세요.

도메인별 기능 프로그래밍 언어

일반적인 기능 프로그래밍 언어는 널리 채택되지 않았지만 일부 도메인별 기능 프로그래밍 언어는 더 나은 성공을 거두었습니다. 예를 들어 CSS(Cascading Style Sheets)는 많은 웹 페이지의 모양과 느낌을 결정하는 데 사용되며 XSLT(Extensible Stylesheet Language Transformations) 스타일시트는 XML 데이터 조작에 광범위하게 사용됩니다. XSLT에 대한 자세한 내용은 XSLT 변환을 참조하세요.

용어

다음 목록에서는 기능 변환과 관련된 몇 가지 용어를 정의합니다.

상위 순서(일류) 함수
프로그래밍 개체로 처리할 수 있는 함수입니다. 예를 들어 상위 함수를 다른 함수에 전달하거나 다른 함수에서 반환할 수 있습니다. C# 및 Visual Basic에서 대리자 및 람다 식은 상위 함수를 지원하는 언어 기능입니다. 상위 순서 함수를 작성하려면 대리자를 가져오기 위해 하나 이상의 인수를 선언하고 호출할 때 람다 식을 사용하는 경우가 많습니다. 대부분의 표준 쿼리 연산자는 상위 순서 함수입니다.

자세한 내용은 표준 쿼리 연산자 개요(C#)표준 쿼리 연산자 개요(Visual Basic)를 참조하세요.

람다 식
기본적으로 대리자 형식이 필요한 곳마다 사용할 수 있는 인라인 익명 함수입니다. 이는 람다 식의 간소화된 정의이지만 이 자습서의 목적에 적합합니다.

자세한 내용은 람다 식(C# 프로그래밍 가이드)람다 식(Visual Basic)을 참조하세요.

수집
일반적으로 균일한 형식의 구조화된 데이터 집합입니다. LINQ와 호환되려면, 컬렉션은 IEnumerable 인터페이스 또는 IQueryable 인터페이스(또는 그들의 제네릭 버전인 IEnumerator<T> 또는 IQueryable<T>) 중 하나를 구현해야 합니다.

튜플(무명 형식)
수학 개념인 튜플은 각각 특정 형식의 유한한 개체 시퀀스입니다. 튜플을 순서가 지정된 목록이라고도합니다. 익명 형식은 명명되지 않은 클래스 형식을 선언하고 해당 형식의 개체를 동시에 인스턴스화할 수 있도록 하는 이 개념의 언어 구현입니다.

자세한 내용은 익명 형식(C# 프로그래밍 가이드)익명 형식(Visual Basic)을 참조하세요.

형식 유추(암시적 입력)
명시적 형식 선언이 없는 경우 변수의 형식을 결정하는 컴파일러의 기능입니다.

자세한 내용은 암시적으로 형식화된 지역 변수(C# 프로그래밍 가이드)로컬 형식 유추(Visual Basic)를 참조하세요.

지연된 실행 및 지연 평가
필요한 값이 실제로 확인될 때까지 식의 평가를 연기하는 것입니다. 지연된 실행은 컬렉션에서 지원됩니다.

자세한 C# 정보는 LINQ to XML(C#)의 LINQ 쿼리 소개(C#)및 지연 실행 및 지연 평가를 참조하세요.

Visual Basic 정보를 더 얻으려면 기본 쿼리 작업 (Visual Basic)LINQ to XML의 지연 실행 및 지연 평가 (Visual Basic)를 참조하세요.

이러한 언어 기능은 이 섹션 전체의 코드 샘플에서 사용됩니다.

참고하십시오