gpt4 book ai didi

rust - 为什么我们需要在 Rust 中用函数名而不是参数签名来定义泛型类型?

转载 作者:行者123 更新时间:2023-12-05 08:24:53 25 4
gpt4 key购买 nike

回顾 generic types chapter of the official Rust book ,我注意到我们必须按如下方式定义通用函数:

fn largest<T>(list: &[T]) -> T {

我的疑惑是:为什么要加<T>largest之后?我们不会对非通用函数执行此操作,例如:fn largest(list: &[i32]) -> i32 .

最佳答案

它们表示两种不同(但同样有效)的事物

fn largest<T>(list: &[T]) -> T

这是说“largest 是一个函数,对于 任何 类型 T,取 T 的一部分并返回 T”。另一方面,

fn largest(list: &[T]) -> T

这个函数表示“largest 获取 T 的一部分并返回一个 T”,其中 T是范围内的某种特定类型。也就是说,第二个定义假设存在某种形式

struct T {}

或范围内的一些其他类型声明、别名或导入,以及 largest 适用于该类型。注意 T对于特定类型来说是一个可怕的名字,但 Rust 不关心好名字。就 Rust 而言,T是一个完全有效的类型。 ndscjkdbhsgey也是如此,但也请不要这样命名您的结构。我们需要 <T>告诉 Rust “这不是一个特定的类型名称;它是一个变量,我选择称它为 T”。

关于rust - 为什么我们需要在 Rust 中用函数名而不是参数签名来定义泛型类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70149632/

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