comptime
是 Zig 的一大特色,使用它可以將許多運算帶到編譯期,從而提高運行時的效率。這個功能類似 C++11 的 constexpr
和 C++20 的 consteval
。
表達式
將 comptime
加在表達式(Expression)前,Zig 就會將其結果在編譯期計算。如果無法在編譯期完成計算則會發出編譯期錯誤。
這邊的例子是以遞迴的方式計算費波那契數,並分成在 Run-time 和 Compile-time 計算的。使用 std.time.nanoTimestamp()
得知耗時,可以發現使用 comptime
的運行時耗時都是 0,代表它們確實在編譯期就已經完成求值。
泛型
泛型的型別也很適合使用 comptime
標記,以向編譯期表達此參數是編譯期就可以確定的。
參考
本文以 Zig 0.13.0
為主。並同時發佈在:
留言可能不會立即顯示。若過了幾天仍未出現,請 Email 聯繫:)