Zig 身為程序式編程(Procedural programming)語言,函式(Function)自然是一大重點(雖然這句話好像在 OOP 和 FP 上也適用…)。
基本語法
這是一個簡單的函式,它擁有兩個參數,和一個回傳值。參數名稱在前、型別後置,回傳值型別在最後。
順序無關
不同於 C,Zig 的函式順序沒有限制,你可以隨意呼叫該函式前或後定義的其它函式,不必和 C 一樣要優先定義或宣告函式原型才可以呼叫。C 使用者大悅!
封裝
Zig 的函式和 Rust 一樣,只有加上 pub
的函式才是公開的,可以被外部 @import
存取和呼叫。否則預設為私有的,只能在定義它的模組內部使用。
一級公民
Zig 的函式是一級公民(First class),這意味著函式可以像變數一樣傳遞、賦值。
或是傳遞函式:
明確捨棄回傳
和 Rust 一樣,如果該函式有回傳值,但是你不需要用它的話,需使用底線 _
來承接回傳值,以明確地捨棄它。Zig 更強制要求這點。
內聯
Zig 和 C 一樣擁有 inline
修飾詞,可以將此函式直接在編譯期替換展開,可以免除調用呼叫的開銷。但是要注意的事也和 C 一樣,建議只有當你真的清楚時才使用它。無法被 inline
的話會造成編譯錯誤。
函式指標
Zig 做為 C 替代,當然也有函式指標:
內建函式
Zig 用有一些特別的函式叫內建函式(builtin function),它們在編譯器實現,不用引用就可以直接調用。它們的名稱以 @
符號開頭。
例如:
@import()
:用來引用模組
@sizeOf()
:用來取得目標型別或值所佔的大小(byte)
@TypeOf()
:用來取得型別(注意大小寫!)
@as()
:強制轉型
@painc()
:引發執行期錯誤
詳細的清單和用法可以參考:Builtin Functions
參考
本文以 Zig 0.13.0
為主。並同時發佈在:
留言可能不會立即顯示。若過了幾天仍未出現,請 Email 聯繫:)