首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

哪个版本更好?为什么:` `fn(a: AType)`或fn<T扩展AType>(a: T)`?

在给出答案之前,我想先解释一下这两个函数签名的含义和区别。

fn(a: AType)表示函数fn接受一个参数a,该参数的类型是AType。这种函数签名是使用具体类型进行参数定义,即只能接受AType类型的参数。

fn<T扩展AType>(a: T)表示函数fn接受一个参数a,该参数的类型是T,并且TAType的子类型或者实现了AType接口的类型。这种函数签名是使用泛型进行参数定义,即可以接受任何扩展自AType的类型作为参数。

现在来回答问题,哪个版本更好,为什么。

如果你确定函数fn只需要接受AType类型的参数,而不需要考虑其他扩展类型,那么使用fn(a: AType)的版本更好。这样可以明确函数的参数类型,提高代码的可读性和可维护性。

如果你希望函数fn能够接受任何扩展自AType的类型作为参数,并且希望在函数内部能够使用AType类型的方法或属性,那么使用fn<T扩展AType>(a: T)的版本更好。这样可以增加函数的灵活性,使其能够适应更多的类型,并且在函数内部可以使用AType类型的特性。

总结起来,选择哪个版本更好取决于你的需求和设计意图。如果你确定只需要特定类型的参数,使用具体类型的函数签名更好;如果你希望函数能够接受更多类型并且使用特定类型的特性,使用泛型的函数签名更好。

腾讯云相关产品和产品介绍链接地址方面,由于不能提及具体的云计算品牌商,我无法给出相关链接。但是腾讯云作为一家知名的云计算服务提供商,提供了丰富的云计算产品和解决方案,你可以通过访问腾讯云官方网站来了解更多相关信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

求你了,不要再在对外接口中使用枚举类型了!

aType; } public enum AType{ P_T, A_B } 然后B系统依赖了这个二方库,并且会通过RPC远程调用的方式调用AFacadeService的doSth...那么A系统依赖的的AType就是这样的: public enum AType{ P_T, A_B, P_M } 而B系统依赖的AType则是这样的: public enum...AType{ P_T, A_B } 这种情况下,在B系统通过RPC调用A系统的时候,如果A系统返回的AResponse中的aType的类型为新增的P_M时候,B系统就会无法解析。...扩展思考 为什么参数中可以有枚举? 不知道大家有没有想过这个问题,其实这个就和二方库的职责有点关系了。...一般情况下,A系统想要提供一个远程接口给别人调用的时候,就会定义一个二方库,告诉其调用方如何构造参数,调用哪个接口。 而这个二方库的调用方会根据其中定义的内容来进行调用。

73350

DDD-如何集成限界上下文和应用服务的使用

开发主机服务:为系统所提供的服务定义一套协议,开放该协议以使其他需要集成的系统能够使用,在有新的集成需求时,对协议进行改进和扩展本章以SaaSOvation公司将REST原则应用与 身份与访问上下文 为例展开...在可以接收重试和超时通知的情况下,我们可以把Product放在一个更好的长时处理过程中。...然而,更准确的是将一组REST资源看作一个单独的模型—视图模型(View Model)展现模型(Presentation Model)[Fowler,PM]。...2.1.6 用例优化资源库查询与其读取多个聚合实例,然后再通过编程的方式将它们组装到单个容器(DTODPO)中,我们可以转而使用用例优化查询。...这也意味着,此时的展现模型不止是向外提供领域对象DTO的属性,而是在渲染视图时,展现模型将根据模型的状态做出一些决定。

1.5K00

推理加速GPT-3超越英伟达方案50%!最新大模型推理系统Energon-AI开源,来自Colossal-AI团队

然而,单设备纵向扩展(scale up)的性能增益在面对指数型增长的模型规模时,仍难以满足大模型的内存与性能需求。...采用半中心化方法,主进程中使用RPC在每个设备调用初始化推理方法,分布式推理就可以得到中心化的控制,同时每个设备则保有自己的Tensor Parallel与Pipeline Parallel通信逻辑。...△Batch管理流程示意图 性能测试 并行推理超线性扩展 △张量并行可扩展性测试结果展示 硬件环境:8 * A100 GPU 80GB。...FasterTransformer在其4.0版本中推出了分布式推理特性,目前支持GPT-3模型的分布式推理,但由于其纯C++代码高度耦合的特点,灵活度与易用性相对较低。..., param_.cublas_handle, CUBLAS_OP_N, CUBLAS_OP_N, n, m, k, &alpha, param_.ffn.output_weight.kernel, AType

96310

推理加速GPT-3超越英伟达方案50%!最新大模型推理系统Energon-AI开源,来自Colossal-AI团队

然而,单设备纵向扩展(scale up)的性能增益在面对指数型增长的模型规模时,仍难以满足大模型的内存与性能需求。...采用半中心化方法,主进程中使用RPC在每个设备调用初始化推理方法,分布式推理就可以得到中心化的控制,同时每个设备则保有自己的Tensor Parallel与Pipeline Parallel通信逻辑。...△Batch管理流程示意图 性能测试 并行推理超线性扩展 △张量并行可扩展性测试结果展示 硬件环境:8 * A100 GPU 80GB。...FasterTransformer在其4.0版本中推出了分布式推理特性,目前支持GPT-3模型的分布式推理,但由于其纯C++代码高度耦合的特点,灵活度与易用性相对较低。..., param_.cublas_handle, CUBLAS_OP_N, CUBLAS_OP_N, n, m, k, &alpha, param_.ffn.output_weight.kernel, AType

1.5K20

【小家java】Java8新特性之---CompletableFuture的系统讲解和实例演示(使用CompletableFuture构建异步应用)

而且还不能及时得到计算结果,为什么不能用观察者设计模式当计算结果完成及时通知监听者呢? 很多语言像Node.js,采用回调的方式实现异步编程。...Java的一些框架像Netty,自己扩展Java的Future接口,提供了addListener等多个扩展方法。...阻塞 // 新提供的方法 public T getNow(T valueIfAbsent) //getNow有点特殊,如果结果已经计算完则返回结果抛异常,否则返回给定的valueIfAbsent的值...(此方法有点反人类有木有) public T join() // 返回计算的结果抛出一个uncheckd异常。...下面这个例子有时会输出100,有时候会输出200,哪个Future先完成就会根据它的结果计算。

2.5K41

【翻译】Rust生命周期常见误区

3) &'a TT: 'a 是相同的 这个误解是上一个的泛化版本。...() -> &'a str; // 泛型版本 fn get_str() -> &'static str; // 'static 版本 // 不合法,无法确定输出的生命周期,因为有多个输入 fn overlap...拷贝在我们处理字节的时候是可行的, 但当我们从 ByteIter 转向泛型切片迭代器用来迭代任意 &'a [T] 的时候 我们也会想到将来可能它会被应用到那些拷贝/克隆的代价很昂贵根本不可能的类型上。...Box::new(t) } 这个函数接收的参数和前一个版本一样,但多了不少东西。...这样写能让它更好吗?不一定, 这取决于我们的程序的要求和约束。这个例子有些抽象,让我们来看看更简单明了的情况。

1.5K20
领券