Rust使用冒号将标识符与类型分开,例如
let x: u8 = 1;
Run Code Online (Sandbox Code Playgroud)
但是,对于函数返回类型 - 而是使用>.例:
fn f() -> u8 { ... }
Run Code Online (Sandbox Code Playgroud)
有人可能会在这里使用冒号:
fn f(): u8 { ... }
Run Code Online (Sandbox Code Playgroud)
虽然使用箭头有一些优先权(例如在Haskell中),但我很好奇这个选择背后的历史原因.另外,我也很好奇它是纯粹的美学原因还是使用箭头有一些技术原因,例如简化解析.
好吧,我只是猜测,但我会说原因纯粹是美学.
:通常发音为"has the type",而->发音为"to".所以f: fn(i32) -> i32意味着"f 具有从... i32 到 的函数类型i32 ".
基本上,有两个上下文可以提到函数的返回值:
功能项目声明:
fn foo(x: i32) -> i32 {
…
}
Run Code Online (Sandbox Code Playgroud)将函数赋值给具有显式类型的变量:
let f: fn(x: i32) -> i32 = foo;
Run Code Online (Sandbox Code Playgroud)虽然在第一种情况下使用冒号代替箭头不会影响可读性,但在第二种情况下肯定会这样做.在两种情况下都有相同的符号是完全合理的.
此箭头的最终原点是Simply Typed Lambda Calculus,其中此箭头用作函数类型构造函数.从那里它来到Haskell,Scala(好吧,不完全是,他们使用=>)和其他语言.
| 归档时间: |
|
| 查看次数: |
489 次 |
| 最近记录: |