F #-클래스

클래스는 속성, 메서드 및 이벤트를 가질 수있는 개체를 나타내는 형식입니다. '응용 프로그램에서 동작, 프로세스 및 모든 개념 엔터티를 모델링하는 데 사용됩니다.'

통사론

클래스 유형을 정의하는 구문은 다음과 같습니다.

// Class definition:
type [access-modifier] type-name [type-params] [access-modifier] ( parameter-list ) [ as identifier ] =
   [ class ]
      [ inherit base-type-name(base-constructor-args) ]
      [ let-bindings ]
      [ do-bindings ]
      member-list
      ...
   [ end ]

// Mutually recursive class definitions:
type [access-modifier] type-name1 ...
and [access-modifier] type-name2 ...
...

어디,

  • 그만큼 type-name유효한 식별자입니다. 이에 대한 기본 액세스 수정자는 다음과 같습니다.public.

  • 그만큼 type-params 선택적 일반 유형 매개 변수를 설명합니다.

  • 그만큼 parameter-list생성자 매개 변수를 설명합니다. 기본 생성자의 기본 액세스 수정자는 다음과 같습니다.public.

  • 그만큼 identifier 옵션과 함께 사용 as 키워드는 인스턴스 변수에 이름을 제공합니다. self-identifier, 유형의 인스턴스를 참조하기 위해 유형 정의에서 사용할 수 있습니다.

  • 그만큼 inherit 키워드를 사용하면 클래스의 기본 클래스를 지정할 수 있습니다.

  • 그만큼 let 바인딩을 사용하면 클래스에 로컬로 필드 또는 함수 값을 선언 할 수 있습니다.

  • 그만큼 do-bindings 섹션에는 객체 생성시 실행되는 코드가 포함됩니다.

  • 그만큼 member-list 추가 생성자, 인스턴스 및 정적 메서드 선언, 인터페이스 선언, 추상 바인딩, 속성 및 이벤트 선언으로 구성됩니다.

  • 키워드 classend 정의의 시작과 끝을 표시하는 것은 선택 사항입니다.

클래스 생성자

생성자는 클래스 유형의 인스턴스를 만드는 코드입니다.

F #에서 생성자는 다른 .Net 언어와 약간 다르게 작동합니다. 클래스 정의에서 기본 생성자의 인수는 매개 변수 목록으로 설명됩니다.

생성자의 본문은 letdo 바인딩.

새 키워드를 사용하여 추가 생성자를 추가하여 구성원을 추가 할 수 있습니다.

new (argument-list) = constructor-body

다음 예제는 개념을 설명합니다-

다음 프로그램은 클래스의 객체가 생성되는 동안 라인의 길이를 계산하는 생성자와 함께 라인 클래스를 생성합니다.

type Line = class
   val X1 : float
   val Y1 : float
   val X2 : float
   val Y2 : float

   new (x1, y1, x2, y2) as this =
      { X1 = x1; Y1 = y1; X2 = x2; Y2 = y2;}
      then
         printfn " Creating Line: {(%g, %g), (%g, %g)}\nLength: %g"
            this.X1 this.Y1 this.X2 this.Y2 this.Length

   member x.Length =
      let sqr x = x * x
      sqrt(sqr(x.X1 - x.X2) + sqr(x.Y1 - x.Y2) )
end
let aLine = new Line(1.0, 1.0, 4.0, 5.0)

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

Creating Line: {(1, 1), (4, 5)}
Length: 5

바인딩하자

클래스 정의의 let 바인딩을 사용하면 F # 클래스에 대한 전용 필드 및 전용 함수를 정의 할 수 있습니다.

type Greetings(name) as gr =
   let data = name
   do
      gr.PrintMessage()
   member this.PrintMessage() =
      printf "Hello %s\n" data
let gtr = new Greetings("Zara")

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

Hello Zara

Greetings 클래스에 대해 자체 식별자 gr 사용에 유의하십시오 .