当前位置: 首页 > 知识库问答 >
问题:

为什么return语句后面的分号是可选的?

裴欣荣
2023-03-14

我想遍历选项的列表。如果其中有一个值,我想返回一个错误。下面是一个人为的例子:

fn test(options: &[Option<u8>]) -> Result<(), &u8> {
    for option in options {
        match option {
            None => (),
            Some(value) => {
                // do some stuff here, so I can't just go
                // Some(value) => return Err(value),
                return Err(value); // this semicolon is optional
            }
        }
    }

    Ok(())
}

添加另一个分号会导致错误,但删除分号不会导致错误。

为什么return语句后面的分号是可选的?

习惯用法Rust应该使用哪种形式:分号还是不使用分号?这两种方法都被编译器接受,并且似乎产生相同的结果。

共有2个答案

鲁泰宁
2023-03-14

这里可以省略,因为返回是一个计算结果为类型的表达式,然后将其强制为空元组(),因此所有匹配臂都具有相同的类型。

惯用的Rust应该使用哪种形式?

添加是惯用的 或删除周围的花括号。这也是货物fmt所做的。

赏彭薄
2023-03-14

为什么return语句后面的分号是可选的?

问题的症结在于,return在Rust中不是一个语句(本身),而是一个返回的表达式 1。

这意味着测试用例的惯用格式实际上是:

fn test(options: &[Option<u8>]) -> Result<(), &u8> {
    for option in options {
        match option {
            None => (),
            Some(value) => return Err(value),
        }
    }

    Ok(())
}

注意,我删除了返回表达式周围的{}。<代码>=

1表示编程语言理论中的底层类型,一种没有实例的类型,用于指示发散的表达式。它也被称为NEVER类型。

如Rust中分号是可选的吗?表达式可以通过添加转换为Rust中的语句。

由于=的右侧

因此,可选的是块的属性:

  • 包含单个语句的块,没有最终表达式:<代码>{返回错误(值);} 。它的类型是()
 类似资料:
  • 我在系统的分号后面加了一个分号。出来打印ln: 这对Java编译器来说是合法的,所以我检查了其他语句,它们也都是合法的。所以当我搜索并找到这些链接时: > 为什么Java在语句末尾不显示双分号错误? 当我用两个分号结束一行时,编译器并没有抱怨。为什么? 什么时候在方法结束括号后面加上分号? 为什么使用连续分号的代码会编译? “if”语句末尾的分号 我开始明白一个额外的分号意味着一个额外的空语句。

  • 问题内容: 什么是语句的简单基本解释是什么,如何在中使用它? 它和语句之间有什么区别? 问题答案: 该函数在控制台中写入一个字符串,即“打印”。该语句使您的函数退出并将值返回给其调用者。通常,功能的要点是接受输入并返回某些内容。当函数准备向其调用者返回值时使用该语句。 例如,这是一个同时使用和的函数: 现在,您可以运行调用的代码,如下所示: 如果将其作为脚本(例如.py文件)而不是在Python解

  • 对于我的Java类,要求我们在working For语句中添加分号,并解释为什么输出是这样的。我不明白为什么添加分号会产生错误的树类型错误,导致代码无法编译。代码下面是输出;我还向any标记添加了反斜杠,因为它不会以其他方式显示。那么,为什么for语句后面的分号会导致这样的错误呢?提前谢谢。 运行时间:

  • 问题内容: 我是Java的新手,这是什么意思?像吗? 如果第二个返回true,将不会执行,对吗? 问题答案: Return语句跳过功能范围的其余执行。 值得读: :http : //docs.oracle.com/javase/tutorial/java/javaOO/returnvalue.html :http : //docs.oracle.com/javase/tutorial/java/n

  • 本文向大家介绍关于JavaScript语句后面的分号问题,包括了关于JavaScript语句后面的分号问题的使用技巧和注意事项,需要的朋友参考一下 JavaScript自动加分号规则,有3条 当有换行符(包括含有换行符的多行注释),并且下一个token没法跟前面的语法匹配时,会自动补分号。 当有}时,如果缺少分号,会补分号 当程序源代码结束时,如果缺少分号,会补分号。  利用我自己的JS语法分析工

  • 我还检查了调试,它将语句=>if(sum==1)返回true;但它也在执行更多的语句。