Rust 使用冒号将标识符与类型分开,例如
let x: u8 = 1;
但是,对于函数返回类型,则使用 -> 来代替。例子:
fn f() -> u8 { ... }
人们可能期望它在这里也使用冒号:
fn f(): u8 { ... }
虽然使用箭头有一定的优先级(例如在 Haskell 中),但我很好奇这种选择背后的历史原因。此外,我也很好奇这是否是纯粹的美学原因,或者使用箭头是否有一些技术原因,例如简化解析。
好吧,我只是猜测,但我想说原因纯粹是审美。:
通常发音为“具有类型”,而->
读作“至”。所以f: fn(i32) -> i32
意思是“f有类型的函数来自i32
to i32
”.
基本上,有两种情况可以提到函数的返回值:
-
功能项声明:
fn foo(x: i32) -> i32 {
…
}
-
将函数分配给具有显式类型的变量:
let f: fn(x: i32) -> i32 = foo;
虽然在第一种情况下使用冒号代替箭头不会损害可读性,但在第二种情况下肯定会这样做。在两种情况下使用相同的符号是非常有意义的。
该箭头的最终起源是简单类型 Lambda 演算 https://en.wikipedia.org/wiki/Simply_typed_lambda_calculus其中该箭头用作函数类型构造函数。从那里开始,它来到了 Haskell、Scala(嗯,不完全是,他们使用=>
)和其他语言。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)