F #-구조

F #의 구조는 값 형식 데이터 형식입니다. 단일 변수를 만들고 다양한 데이터 유형의 관련 데이터를 보유하는 데 도움이됩니다. 그만큼struct 키워드는 구조를 만드는 데 사용됩니다.

통사론

구조를 정의하는 구문은 다음과 같습니다.

[ attributes ]
type [accessibility-modifier] type-name =
   struct
      type-definition-elements
   end
// or
[ attributes ]
[<StructAttribute>]
type [accessibility-modifier] type-name =
   type-definition-elements

두 가지 구문이 있습니다. 첫 번째 구문은 주로 사용됩니다.structend 키워드, 당신은 생략 할 수 있습니다 StructAttribute 속성.

구조 정의 요소는-

  • 회원 선언 및 정의.
  • 생성자 및 변경 가능 및 변경 불가능한 필드.
  • 멤버 및 인터페이스 구현.

클래스와 달리 구조는 상속 될 수 없으며 let 또는 do 바인딩을 포함 할 수 없습니다. 이후 구조에는 let 바인딩이 없습니다. 다음을 사용하여 구조의 필드를 선언해야합니다.val 예어.

다음을 사용하여 필드 및 유형을 정의 할 때 val키워드를 사용하면 필드 값을 초기화 할 수 없습니다. 대신 0 또는 null로 초기화됩니다. 따라서 암시 적 생성자가있는 구조의 경우val 선언은 DefaultValue 속성.

다음 프로그램은 생성자와 함께 선 구조를 만듭니다. 이 프로그램은 구조를 사용하여 선의 길이를 계산합니다-

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

   new (x1, y1, x2, y2) =
      {X1 = x1; Y1 = y1; X2 = x2; Y2 = y2;}
end
let calcLength(a : Line)=
   let sqr a = a * a
   sqrt(sqr(a.X1 - a.X2) + sqr(a.Y1 - a.Y2) )

let aLine = new Line(1.0, 1.0, 4.0, 5.0)
let length = calcLength aLine
printfn "Length of the Line: %g " length

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

Length of the Line: 5