gpt4 book ai didi

dart - 新的Dart版本破坏了int和double使用num的抽象

转载 作者:行者123 更新时间:2023-12-03 04:55:46 24 4
gpt4 key购买 nike

以下代码曾在Dart 2.6中使用(非常简化的示例!):

T plus<T extends num>(T a, T b) => a + b;

现在失败了: A value of type 'num' can't be returned from method 'plus' because it has a return type of 'T'.
有没有一种方法可以像示例中那样抽象 double / int

最佳答案

我假设您正在将--no-implicit-casts标志传递给分析器以获取此错误。该代码在当前的Dart语言中是正确的,但是包含一个隐式强制转换,因此,如果您选择禁用它们,则该代码将不被接受。

该代码不起作用的原因是a + b的静态类型是num(两者都具有T类型,仅知道它是对num的扩展,因此将它们视为num,并且num.operator+返回num),并且返回类型为T,可能扩展num

因此,如果允许的话,代码会执行从numT的隐式转换。

为了即使没有隐式强制转换也可以编译代码,您必须将其转换为显式强制转换:

T plus<T extends num>(T a, T b) => (a + b) as T;

关于dart - 新的Dart版本破坏了int和double使用num的抽象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60623220/

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