참조 셀은 참조 의미 체계를 사용하여 변경 가능한 값을 만들 수 있는 스토리지 위치입니다.
문법
ref expression
비고
이 함수를 ref 사용하여 초기 값이 있는 새 참조 셀을 만듭니다. 그런 다음 변경 가능하므로 기본 값을 변경할 수 있습니다. 참조 셀은 실제 값을 보유합니다. 주소가 아닙니다.
다음 코드 예제에서는 참조 셀의 선언 및 사용을 보여 줍니다.
let xRef = ref 10
printfn "%d" xRef.Value
xRef.Value <- 11
printfn "%d" xRef.Value
출력은 다음과 같습니다.
10
11
참조 셀은 다음과 같이 선언되는 제네릭 레코드 형식의 Ref 인스턴스입니다.
type Ref<'a> =
{ mutable contents: 'a }
형식 'a ref 은 .의 동의어 Ref<'a>입니다. IDE의 컴파일러 및 IntelliSense는 이 형식에 대한 전자를 표시하지만 기본 정의는 후자입니다.
연산자는 ref 새 참조 셀을 만듭니다. 다음 코드는 연산자의 선언입니다 ref .
let ref x = { contents = x }
다음 표에서는 참조 셀에서 사용할 수 있는 기능을 보여줍니다.
| 연산자, 멤버 또는 필드 | 설명 | 유형 | 정의 |
|---|---|---|---|
ref (연산자) |
값을 새 참조 셀에 캡슐화합니다. | 'a -> 'a ref |
let ref x = { contents = x } |
Value (속성) |
기본 값을 가져오거나 설정합니다. | unit -> 'a |
member x.Value = x.contents |
C# 프로그래머는 C#에서 F#과 동일하지 않다는 것을 ref 알아야 ref 합니다. F#의 해당 구문은 참조 셀과 다른 개념인 바이레프입니다.
로 표시된 값은 클로저에 'a ref 의해 캡처되는 경우 자동으로 승격될 수 있습니다. 값을 참조하세요.mutable
사용되지 않는 구문
F# 6.0부터 다음 연산자는 더 이상 사용되지 않으며 해당 연산자는 정보 경고를 제공합니다.
| 연산자, 멤버 또는 필드 | 설명 | 유형 | 정의 |
|---|---|---|---|
! (역참조 연산자, 사용되지 않음) |
기본 값을 반환합니다. | 'a ref -> 'a |
let (!) r = r.contents |
:= (대입 연산자, 사용되지 않음) |
기본 값을 변경합니다. | 'a ref -> 'a -> unit |
let (:=) r x = r.contents <- x |
contents (레코드 필드) |
기본 값을 가져오거나 설정합니다. | 'a |
let ref x = { contents = x } |
대신 직접 사용하는 .Value 것이 좋습니다. F# RFC FS-1111을 참조하세요.
필드는 contents 다른 버전의 ML과의 호환성을 위해 제공되며 컴파일 중에 경고를 생성합니다. 경고를 사용하지 않도록 설정하려면 컴파일러 옵션을 사용합니다 --mlcompatibility . 자세한 내용은 컴파일러 옵션참조하세요.
참고하십시오
.NET