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 หรือทำการผูกได้ เนื่องจากโครงสร้างไม่อนุญาตให้มีการผูกมัด คุณต้องประกาศเขตข้อมูลในโครงสร้างโดยใช้val คำสำคัญ.
เมื่อคุณกำหนดเขตข้อมูลและประเภทโดยใช้ valคำสำคัญคุณไม่สามารถเริ่มต้นค่าฟิลด์ได้ แต่จะเริ่มต้นเป็นศูนย์หรือว่าง ดังนั้นสำหรับโครงสร้างที่มีตัวสร้างโดยนัยไฟล์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