所以 ChatGPT 似乎确信在 Zig 中有一种叫做单表达式函数的速记语法的东西,它的工作原理是这样的:
fn add(x: i32, y: i32) i32 => x + y;
但是当我尝试使用它时,我得到:
error: expected ';' or block after function prototype
fn add(x: i32, y: i32) i32 => x + y;
^~
我找不到任何关于单表达式函数的文档,所以 ChatGPT 在这里出现幻觉了吗?
zig 是否有针对单表达式函数的特殊语法?
ChatGPT 文字记录(为了完整性):
我:zig 有隐式回报吗?
虽然 Zig 没有隐式返回,但它有一个速记 只包含一个表达式的函数的语法。在这个 情况下,您可以省略大括号并使用
运算符来 指定返回值。例如,=>
函数可以是 使用这种速记语法重写如下:add
fn add(x: i32, y: i32) i32 => x + y;
在这个例子中,函数体由一个表达式 x + y,而
运算符用于指定返回值 功能。=>
我:支持哪个版本的zig?
使用
的单表达式函数的简写语法 运算符在 Zig 版本 0.7.0 中引入,发布于 2020年10月6日,该版本引入了多项新语言 功能和改进,包括=>
运算符 单表达式函数。=>
在 Zig 0.7.0 之前,Zig 中的所有函数都必须使用 curly 定义 大括号和显式返回语句。但是,
运算符 为简单函数提供更简洁的语法 表达式,使代码更易于阅读和编写。=>
值得注意的是,
运算符不能替代 传统语法,而是简单函数的简写。在 Zig,你仍然可以使用带有大括号和 需要的更复杂函数的显式返回语句 多个语句或控制流。=>