gpt4 book ai didi

rust - Rust 函数定义返回类型中 -> 的起源是什么?

转载 作者:行者123 更新时间:2023-11-29 08:03:13 25 4
gpt4 key购买 nike

Rust 使用冒号将标识符与类型分开,如

let x: u8 = 1;

但是,对于函数返回类型,使用 -> 代替。示例:

fn f() -> u8 { ... }

人们可能希望它在这里也使用冒号:

fn f(): u8 { ... }

虽然使用箭头有一定的优先级(例如在 Haskell 中),但我很好奇这种选择背后的历史原因。此外,我也很好奇这是否是纯粹的美学原因,或者使用箭头是否有一些技术原因,例如简化解析。

最佳答案

好吧,我只是猜测,但我想说原因纯粹是审美。: 通常发音为“has the type”,而 -> 发音为“to”。所以 f: fn(i32) -> i32 意味着“f 具有从 i32 的函数类型 i32”。

基本上,有两种情况可以提及函数的返回值:

  1. 功能项声明:

    fn foo(x: i32) -> i32 {

    }
  2. 将函数赋值给具有显式类型的变量:

    let f: fn(x: i32) -> i32 = foo;

虽然在第一种情况下使用冒号而不是箭头不会影响可读性,但在第二种情况下肯定会影响可读性。在两种上下文中使用相同的符号非常有意义。

这个箭头的最终来源是Simply Typed Lambda Calculus此箭头用作函数类型构造函数的位置。从那里它来到了 Haskell、Scala(嗯,不完全是,他们使用 =>)和其他语言。

关于rust - Rust 函数定义返回类型中 -> 的起源是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35018919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com