- F# 基礎教程
- F# - 首頁
- F# - 概述
- F# - 環境設定
- F# - 程式結構
- F# - 基本語法
- F# - 資料型別
- F# - 變數
- F# - 運算子
- F# - 決策
- F# - 迴圈
- F# - 函式
- F# - 字串
- F# - 可選值
- F# - 元組
- F# - 記錄
- F# - 列表
- F# - 序列
- F# - 集合
- F# - 對映
- F# - 判別聯合
- F# - 可變資料
- F# - 陣列
- F# - 可變列表
- F# - 可變字典
- F# - 基本 I/O
- F# - 泛型
- F# - 委託
- F# - 列舉
- F# - 模式匹配
- F# - 異常處理
- F# - 類
- F# - 結構體
- F# - 運算子過載
- F# - 繼承
- F# - 介面
- F# - 事件
- F# - 模組
- F# - 名稱空間
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 關鍵字定義欄位及其型別時,不能初始化欄位值,而是將其初始化為零或 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
廣告