F #-모듈

MSDN 라이브러리에 따라 F # 모듈은 do 바인딩의 형식, 값, 함수 값 및 코드와 같은 F # 코드 구문의 그룹입니다. 정적 멤버 만있는 CLR (공용 언어 런타임) 클래스로 구현됩니다.

전체 파일이 모듈에 포함되는지 여부에 따라 두 가지 유형의 모듈 선언이 있습니다.

  • 최상위 모듈 선언
  • 로컬 모듈 선언

최상위 모듈 선언에서는 전체 파일이 모듈에 포함됩니다. 이 경우 파일의 첫 번째 선언은 모듈 선언입니다. 최상위 모듈에서 선언을 들여 쓸 필요가 없습니다.

로컬 모듈 선언에서 해당 모듈 선언 아래에 들여 쓰기 된 선언 만 모듈의 일부입니다.

통사론

모듈 선언 구문은 다음과 같습니다.

// Top-level module declaration.
module [accessibility-modifier] [qualified-namespace.]module-name
   declarations

// Local module declaration.
module [accessibility-modifier] module-name =
   declarations

접근성 수정자는 공개, 비공개, 내부 중 하나 일 수 있습니다. 기본값은public.

다음 예제는 개념을 보여줍니다-

예 1

모듈 파일 Arithmetic.fs-

module Arithmetic
let add x y =
   x + y

let sub x y =
   x - y
	
let mult x y =
   x * y
	
let div x y =
   x / y

프로그램 파일 main.fs-

// Fully qualify the function name.
open Arithmetic
let addRes = Arithmetic.add 25 9
let subRes = Arithmetic.sub 25 9
let multRes = Arithmetic.mult 25 9
let divRes = Arithmetic.div 25 9

printfn "%d" addRes
printfn "%d" subRes
printfn "%d" multRes
printfn "%d" divRes

프로그램을 컴파일하고 실행하면 다음과 같은 출력이 생성됩니다.

34
16
225
2
110
90
1000
10

예 2

// Module1
module module1 =
   // Indent all program elements within modules that are declared with an equal sign.
   let value1 = 100
   let module1Function x =
      x + value1

// Module2
module module2 =
   let value2 = 200

   // Use a qualified name to access the function.
   // from module1.
   let module2Function x =
      x + (module1.module1Function value2)

let result = module1.module1Function 25
printfn "%d" result

let result2 = module2.module2Function 25
printfn "%d" result2

프로그램을 컴파일하고 실행하면 다음과 같은 출력이 생성됩니다.

125
325