다음을 통해 공유


let 바인딩(F#)

바인딩은 값이나 함수에 식별자를 연결합니다. 값이나 함수에 이름을 바인딩하려면 let 키워드를 사용합니다.

// Binding a value:
let identifier-or-pattern [: type] =
   expression
body-expression
// Binding a function value:
let identifier parameter-list [: return-type ] =
   expression
body-expression

설명

let 키워드는 하나 이상의 이름에 대해 값 또는 함수 값을 정의하는 바인딩 식에 사용됩니다. 가장 단순한 형식의 let 식은 다음과 같이 단순 값에 이름을 바인딩하는 식입니다.

let i = 1

줄 바꿈을 사용하여 식별자로부터 식을 구분하는 경우 다음 코드에서와 같이 식의 각 줄을 들여써야 합니다.

let someVeryLongIdentifier =
    // Note indentation below.
    3 * 4 + 5 * 6

단순한 이름 대신 다음 코드에서와 같이 튜플 등 이름이 포함된 패턴을 지정할 수 있습니다.

let i, j, k = (1, 2, 3)

body-expression은 이름이 사용되는 식입니다. 본문 식은 별도의 줄에 표시됩니다. 이 줄은 let 키워드의 첫 글자와 나란히 정렬되도록 들여써야 합니다.

let result =
    let i, j, k = (1, 2, 3)
    // Body expression: 
    i + 2*j + 3*k

let 바인딩은 모듈 수준에서 클래스 형식의 정의에 사용되거나 함수 정의 같은 로컬 범위에 사용될 수 있습니다. 모듈이나 클래스 형식의 최상위 수준에 사용되는 let 바인딩에는 본문 식이 없어도 되지만 다른 범위 수준에 사용되는 바인딩에는 본문 식이 필요합니다. 바인딩된 이름은 다음 코드에서와 같이 정의 시점 이후에 사용할 수 있지만 이 이름을 사용하기 위해서는 let 바인딩이 먼저 등장해야 합니다.

// Error:
printfn "%d" x  
let x = 100
// OK: 
printfn "%d" x

함수 바인딩

함수 바인딩은 값 바인딩의 규칙을 따르지만 함수 바인딩의 경우 다음 코드에서와 같이 함수 이름 및 매개 변수가 포함된다는 점에서 차이가 있습니다.

let function1 a =
    a + 1

일반적으로 매개 변수는 튜플 패턴 같은 패턴입니다.

let function2 (a, b) = a + b

let 바인딩 식에서는 마지막 식의 값을 구합니다. 따라서 다음 코드 예제의 경우 result의 값은 100 * function3 (1, 2)의 계산 결과로 구해집니다. 이 경우 그 결과는 300입니다.

let result =
    let function3 (a, b) = a + b
    100 * function3 (1, 2)

형식 주석

콜론(:) 뒤에 형식 이름을 추가하고 이 전체를 괄호로 묶어 매개 변수의 형식을 지정할 수 있습니다. 마지막 매개 변수 뒤에 콜론과 형식을 추가하여 반환 값의 형식을 지정할 수도 있습니다. 정수가 매개 변수 형식인 function1의 전체 형식 주석은 다음과 같습니다.

let function1 (a: int) : int = a + 1

명시적 형식 매개 변수가 없으면 형식 유추를 통해 함수 매개 변수의 형식을 결정합니다. 여기에는 매개 변수의 형식을 제네릭으로 자동 일반화하는 경우가 포함될 수 있습니다.

자세한 내용은 자동 일반화(F#)형식 유추(F#)를 참조하십시오.

클래스의 let 바인딩

let 바인딩은 클래스 형식에 사용될 수 있지만 구조체 또는 레코드 형식에는 사용될 수 없습니다. 클래스 형식에 let 바인딩을 사용하려면 클래스에 기본 생성자가 있어야 합니다. 생성자 매개 변수는 클래스 정의의 형식 이름 뒤에 나와야 합니다. 클래스 형식의 let 바인딩은 해당 클래스 형식의 전용 필드 및 멤버를 정의합니다. 이 바인딩은 형식의 do 바인딩과 함께 형식의 기본 생성자 코드를 구성합니다. 다음 코드 예제에서는 전용 필드 field1과 field2가 있는 MyClass 클래스를 보여 줍니다.

type MyClass(a) =
    let field1 = a
    let field2 = "text"
    do printfn "%d %s" field1 field2
    member this.F input =
        printfn "Field1 %d Field2 %s Input %A" field1 field2 input

field1 및 field2의 범위는 이를 선언한 형식으로 제한됩니다. 자세한 내용은 클래스의 let 바인딩(F#)을 참조하십시오.

let 바인딩의 형식 매개 변수

모듈 수준의 let 바인딩은 형식이나 계산 식에서 명시적 형식 매개 변수를 가질 수 있습니다. 함수 정의 내에 있는 경우 등과 같은 식의 let 바인딩은 형식 매개 변수를 가질 수 없습니다. 자세한 내용은 제네릭(F#)을 참조하십시오.

let 바인딩에 대한 특성

다음 코드에서와 같이 모듈의 최상위 let 바인딩에 특성을 적용할 수 있습니다.

[<Obsolete>]
let function1 x y = x + y

참고 항목

참조

함수(F#)

클래스의 let 바인딩(F#)