函數
定義函數、回傳值和效果註釋。
函數
函數仍然是 Sounio 最清晰的地方:它們結合了普通已類型化的參數和返回值,以及明確的效果追蹤。本頁面專注於在當前公開合同中這意味著什麼。
當前合同
- 函數以
fn聲明,並可以使用函數體中的最終表達式回傳值。 - 副作用以明確的方式在函數簽名中模擬,使用
with ...。 - 語言設計中存在簡單的泛型和方法是,但目前最佳公開範例仍然是受當前固定值支持的那些。
值得教學的函數形態
fn add(a: i32, b: i32) -> i32 {
a + b
}
fn log(msg: string) with IO {
println(msg)
}
這在何處實現
self-hosted/parser/items.sio和self-hosted/parser/types.sio是聲明解析的核心。self-hosted/check/types.sio、self-hosted/check/infer.sio和self-hosted/check/effects.sio覆蓋函數類型和效果需求。self-hosted/check/traits.sio和self-hosted/check/specialization.sio在你追蹤更進階可調用表面時很有用。
避免常見文檔錯誤
- 不要將函數簽名作為純類型語法呈現;在 Sounio 中,效果子句是實際 API 契約的一部分。
- 不要假設所有在舊文檔中提到的進階可調用功能在檢查過的物件中同樣穩定。
- 對於公開文檔,保持範例小、明確且容易使用
souc check驗證。