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
두 가지 구문이 있습니다. 첫 번째 구문은 주로 사용됩니다.struct 과 end 키워드, 당신은 생략 할 수 있습니다 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