From 200288d50c264b72021c750361698b38d53ccd90 Mon Sep 17 00:00:00 2001 From: jinzhongjia Date: Mon, 18 Sep 2023 19:55:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=87=BD=E6=95=B0=E7=AB=A0?= =?UTF-8?q?=E8=8A=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- learn/basic/basic_type/function.md | 41 +++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/learn/basic/basic_type/function.md b/learn/basic/basic_type/function.md index 5b236194..2c98f0b8 100644 --- a/learn/basic/basic_type/function.md +++ b/learn/basic/basic_type/function.md @@ -6,4 +6,43 @@ outline: deep > 函数是编程语言中最为基本的语句。 -TODO +zig 的函数明显,你可以一眼就看出来它的组成,我们来用一个简单的函数作为说明: + +```zig +pub fn add(a: u8, b: u8) u8 { + return a + b; +} +``` + +> 如果你有 C++ 的使用经验,一眼就可以看出来各自的作用。 + +下面来进行说明: + +1. `pub` 是访问修饰符,有且只有一个选择,那就是 `pub`,这代表着函数是公共可访问的(其他的文件import该文件后,可以直接使用这个函数)。 +2. `fn` 是关键字,代表着我们接下来定义了一个函数。 +3. `add` 是标识符,作为函数的名字。 +4. `a: u8` 是参数的标识符和类型,这里有两个参数,分别是 `a` 和 `b`,它们的类型均是 `u8`。 +5. `u8` 是函数的返回类型,在 zig 中,一个函数只能返回一个值。 + +如果没有返回值,请使用 `void`。 + +:::info 🅿️ 提示 +你可能注意到了有的函数定义是这样子的: + +```zig +fn max(comptime T: type, a: T, b: T) T { + return if (a > b) a else b; +} +``` + +其中的 `comptime T: type` 你可能很陌生,这是编译期参数,它是用来实现鸭子类型(泛型)的关键语法! + +::: + +:::details 关于函数命名 + +这里命名规则没什么强制性的要求,你只需要保证符合变量声明的 [_标识符规范_](/basic/define-variable.html#标识符命名) 即可。 + +如果你需要一个命名的推荐规则的话,可以参照 zig 源码的命名方式,它使用的是[小驼峰命名法](#)。 + +:::