다음을 통해 공유


F#의 값은 특정 형식을 가진 수량이며, 값은 정수 또는 부동 소수점 숫자, 문자 또는 텍스트, 목록, 시퀀스, 배열, 튜플, 구분된 공용 구조체, 레코드, 클래스 형식 또는 함수 값이 될 수 있습니다.

값 바인딩

바인딩이란 용어는 이름과 정의를 연결하는 것을 의미합니다. let 키워드는 다음 예제와 같이 값을 바인딩합니다.

let a = 1
let b = 100u
let str = "text"

// A function value binding.

let f x = x + 1

특정 값의 형식은 정의에서 유추됩니다. 정수 또는 부동 소수점 숫자와 같은 기본 형식의 경우 형식은 리터럴 형식에서 결정됩니다. 따라서 앞의 예제에서 컴파일러는 b의 형식을 unsigned int로 유추하는 반면 컴파일러는 a의 형식을 int로 유추합니다. 함수 값의 형식은 함수 본문의 반환 값에서 결정됩니다. 함수 값 형식에 대한 자세한 내용은 함수를 참조하세요. 리터럴 형식에 대한 자세한 내용은 리터럴을 참조하세요.

컴파일러는 기본적으로 사용되지 않는 바인딩에 대해 진단을 실행하지 않습니다. 이 메시지를 받으려면 컴파일러를 호출할 때 또는 프로젝트 파일에서 경고 1182를 사용하도록 설정합니다(컴파일러 옵션--warnon 참조).

변경할 수 없는 이유

변경할 수 없는 값은 프로그램의 실행 과정에서 변경할 수 없는 값입니다. C++, Visual Basic, C# 등의 언어를 사용하는 경우, 프로그램의 실행 과정에서 F#이 새 값을 할당할 수 있는 변수보다 변경할 수 없는 값에 우선 순위를 두는 것이 낯설게 여겨질 수 있습니다. 변경 불가능한 데이터는 함수형 프로그래밍의 중요한 요소입니다. 다중 스레드 환경에서 여러 다양한 스레드에 의해 변경될 수 있는 공유 가변 변수는 관리하기가 어렵습니다. 또한 변경 가능한 변수를 사용할 경우 다른 함수에 전달되는 변수를 변경할 수 있는지 여부를 구분하는 것이 때로 어렵습니다.

순수 함수형 언어에서는, 변수가 없으며 함수는 수학 함수로 엄격하게 동작합니다. 프로시저 언어의 코드는 변수 할당을 사용하여 값을 변경하는 경우, 함수형 언어의 해당하는 코드에는 변경할 수 없는 값(입력), 변경할 수 없는 함수 및 여러 변경할 수 없는 값(출력)이 있습니다. 이러한 수학적 엄격성은 프로그램의 동작에 대한 트리거 추론을 허용합니다. 이러한 트리거 추론이 바로 컴파일러에서 코드를 보다 엄격하게 확인하고 보다 효과적으로 최적화할 수 있는 요인이며, 이를 통해 개발자는 올바른 코드를 쉽게 이해하고 작성할 수 있습니다. 따라서 함수형 코드는 일반적인 프로시저 코드보다 디버깅하기 쉬울 수 있습니다.

F#은 순수 함수형 언어가 아니지만 함수형 프로그래밍을 완전하게 지원합니다. 변경할 수 없는 값을 사용하면 코드가 함수형 프로그래밍의 중요한 측면에서 이점을 얻을 수 있으므로 그렇게 하는 것이 좋습니다.

변경 가능한 변수

mutable 키워드를 사용하여 변경할 수 있는 변수를 지정할 수 있습니다. F#의 변경 가능한 변수에는 일반적으로 특정 형식의 필드로 또는 로컬 값의 제한된 범위가 있어야 합니다. 제한된 범위의 변경 가능한 변수는 더 쉽게 제어할 수 있으므로 잘못된 방법으로 수정하는 경우가 더 적습니다.

값을 정의할 때와 동일한 방식으로 let 키워드를 사용하여 변경 가능한 변수에 초기 값을 할당할 수 있습니다. 그러나 다음 예제와 같이, 이후에 <- 연산자를 사용하여 변경 가능한 변수에 새 값을 할당할 수 있다는 점이 다릅니다.

let mutable x = 1
x <- x + 1

mutable로 표시된 값은 seq 작성기와 같은 클로저를 만드는 양식을 포함하여 클로저에 의해 캡처된 경우 자동으로 'a ref로 승격될 수 있습니다. 이 사실에 대한 알림을 받으려면 컴파일러를 호출할 때 또는 프로젝트 파일에서 경고 3180을 사용하도록 설정합니다.

제목 설명
let 바인딩 let 키워드를 사용하여 이름을 값 및 함수에 바인딩하는 방법에 대한 정보를 제공합니다.
함수 F#의 함수를 간략하게 설명합니다.

참고 항목