标签: semicolon-inference

为什么在 Rust 函数的末尾 Ok(()) 后面没有分号?

取自current_dir文档的代码片段:

use std::env;

fn main() -> std::io::Result<()> {
    let path = env::current_dir()?;
    println!("The current directory is {}", path.display());
    Ok(())
}
Run Code Online (Sandbox Code Playgroud)

我注意到只有在 之后添加分号Ok(()),程序才不会编译并出现以下错误:

error[E0308]: mismatched types
expected enum `std::result::Result`, found `()`
Run Code Online (Sandbox Code Playgroud)

这是为什么?

rust semicolon-inference

4
推荐指数
1
解决办法
180
查看次数

什么时候在Scala中强制使用分号?

我正在学习如何在Scala中编程,并被告知Scala中的分号是可选的.因此,考虑到这一点,我尝试使用以下嵌套的代码块,它没有半冒号.但是,它会在Scala REPL中引发错误

scala> { val a = 1
 | {val b = a * 2
 | {val c = b + 4
 | c}
 | }
 | }
<console>:17: error: Int(1) does not take parameters
   {val b = a * 2
Run Code Online (Sandbox Code Playgroud)

半结肠的样本工作得非常好.

scala> { val a = 1;
 | { val b = a*2;
 | { val c = b+4; c}
 | }
 | }
res22: Int = 6
Run Code Online (Sandbox Code Playgroud)

因此,在我看来,半结肠不是真正可选的,在某些情况下是强制性的.请问在什么情况下半结肠是强制性的?

syntax scala semicolon-inference

2
推荐指数
2
解决办法
305
查看次数

标签 统计

semicolon-inference ×2

rust ×1

scala ×1

syntax ×1