我想遍历选项的列表。如果其中有一个值,我想返回一个错误。下面是一个人为的例子:
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应该使用哪种形式:分号还是不使用分号?这两种方法都被编译器接受,并且似乎产生相同的结果。
这里可以省略;
,因为返回
是一个计算结果为!
类型的表达式,然后将其强制为空元组()
,因此所有匹配臂都具有相同的类型。
惯用的Rust应该使用哪种形式?
添加是惯用的
或删除周围的花括号。这也是货物fmt所做的。
为什么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;但它也在执行更多的语句。