이 페이지가 유용했습니까?
이 콘텐츠에 대한 여러분의 의견은 중요합니다. 의견을 알려주십시오.
추가 의견
1500자 남음
내보내기(0) 인쇄
모두 확장
이 문서는 수동으로 번역한 것입니다. 원본 텍스트를 보려면 포인터를 문서의 문장 위로 올리십시오. 추가 정보
번역
원본

가져오기 선언: open 키워드(F#)

가져오기 선언에서는 정규화된 이름을 사용하지 않고 해당 요소를 참조할 수 있는 모듈이나 네임스페이스를 지정합니다.

open module-or-namespace-name

매번 정규화된 네임스페이스나 모듈 경로를 사용하여 코드를 참조하면 코드를 작성하고, 읽고, 유지 관리하기가 어려울 수 있습니다. 자주 사용되는 모듈과 네임스페이스에 대해 open 키워드를 대신 사용하면 해당 모듈이나 네임스페이스의 멤버를 참조할 때 정규화된 이름 대신 짧은 형식의 이름을 사용할 수 있습니다. 이 키워드는 C#의 using 키워드, Visual C++의 usingnamespace 및 Visual Basic의 Imports와 비슷합니다.

제공되는 모듈 또는 네임스페이스는 동일한 프로젝트에 있거나 참조 대상인 프로젝트 또는 어셈블리에 있어야 합니다. 모듈이나 네임스페이스의 위치가 이와 다르면 프로젝트에 대한 참조를 추가하거나 -reference 명령줄 옵션 또는 그 축약형인 -r 옵션을 사용할 수 있습니다. 자세한 내용은 컴파일러 옵션(F#)을 참조하십시오.

가져오기 선언을 사용하면 선언 뒤에 오는 코드에 이름을 사용할 수 있습니다. 이름을 사용할 수 있는 범위는 선언을 포함하는 네임스페이스, 모듈 또는 파일의 끝까지입니다.

여러 개의 가져오기 선언을 사용할 때는 각 선언을 개별 줄에 작성해야 합니다.

다음 코드에서는 open 키워드를 사용하여 코드를 간단하게 만드는 방법을 보여 줍니다.

// Without the import declaration, you must include the full 
// path to .NET Framework namespaces such as System.IO. 
let writeToFile1 filename (text: string) =
  let stream1 = new System.IO.FileStream(filename, System.IO.FileMode.Create)
  let writer = new System.IO.StreamWriter(stream1)
  writer.WriteLine(text)

// Open a .NET Framework namespace. 
open System.IO

// Now you do not have to include the full paths. 
let writeToFile2 filename (text: string) =
  let stream1 = new FileStream(filename, FileMode.Create)
  let writer = new StreamWriter(stream1)
  writer.WriteLine(text)

writeToFile2 "file1.txt" "Testing..."

열려 있는 여러 모듈이나 네임스페이스에 동일한 이름이 발견되어 모호성이 발생하더라도 F# 컴파일러에서는 오류나 경고를 발생시키지 않습니다. 모호성이 발생하면 F#에서는 더 최근에 열었던 모듈이나 네임스페이스에 참조 우선 순위를 부여합니다. 예를 들어 다음 코드에서 emptyListSeq 모듈에 둘 다 포함되어 있더라도 emptySeq.empty를 의미합니다.

open List
open Seq
printfn "%A" empty

따라서 이름이 같은 멤버를 포함하는 ListSeq 같은 모듈 또는 네임스페이스를 열 때는 주의를 기울여야 합니다. 이 경우 정규화된 이름을 대신 사용하는 것도 좋은 방법이 될 수 있습니다. 가져오기 선언의 순서에 코드가 종속되는 상황은 발생하지 않도록 해야 합니다.

일부 네임스페이스는 F# 코드에서 매우 자주 사용되므로 명시적 가져오기 선언이 없더라도 암시적으로 열립니다. 다음 표에는 기본적으로 열리는 네임스페이스가 나와 있습니다.

namespace

설명

Microsoft.FSharp.Core

int float 같은 기본 제공 형식에 대한 기본 F# 형식 정의를 포함합니다.

Microsoft.FSharp.Core.Operators

+ * 같은 기본 산술 연산을 포함합니다.

Microsoft.FSharp.Collections

List Array 같은 변경할 수 없는 컬렉션 클래스를 포함합니다.

Microsoft.FSharp.Control

지연 계산 및 비동기 워크플로 같은 제어 구문의 형식을 포함합니다.

Microsoft.FSharp.Text

printf 함수 같은 서식 지정된 IO의 함수를 포함합니다.

어셈블리에 AutoOpen 특성을 적용하면 어셈블리를 참조할 때 네임스페이스나 모듈이 자동으로 열리게 할 수 있습니다. 모듈에 AutoOpen 특성을 적용하여 부모 모듈 또는 네임스페이스를 열 때 해당 모듈이 자동으로 열리게 할 수도 있습니다. 자세한 내용은 Core.AutoOpenAttribute 클래스(F#)를 참조하십시오.

일부 모듈, 레코드 또는 union 형식을 RequireQualifiedAccess 특성을 지정할 수 있습니다. 이러한 모듈, 레코드 또는 공용 구조체의 요소를 참조 하는 경우는 가져오기 선언이 포함 하는지 여부에 관계 없이 정규화 된 이름을 사용 해야 합니다. 이 특성이 전략적를 사용 하면 일반적으로 정의 하는 형식 이름을 사용 하면 이름 충돌을 방지 하 여 코드 력을 라이브러리에서 변경 하는 데 도움이. 자세한 내용은 Core.RequireQualifiedAccessAttribute 클래스(F#)를 참조하십시오.

커뮤니티 추가 항목

표시:
© 2015 Microsoft