gpt4 book ai didi

delphi - 在 Delphi 中用泛型替换重载?

转载 作者:行者123 更新时间:2023-12-03 18:17:57 25 4
gpt4 key购买 nike

我的问题与“How to use generics as a replacement for a bunch of overloaded methods working with different types?”非常相似'

我尝试了建议的解决方案 GetRandomValueFromArray 并且它没有给出 complitetime 错误。但以下内容无法编译:

Declaration / definition in existing class Tilib ..

class function SetSingleBit<T>(const Value: T; const Bit: Byte): T;

class function Tilib.SetSingleBit<T>(const Value: T; const Bit: Byte): T;
begin
Result := Value or (1 shl Bit);
end;

Delphi 10.2 发出错误“E2015 Operator ist auf diesen Operandentyp nicht anwendbar”(运算符不适用于该操作数类型)。有谁知道这有什么问题吗?

最佳答案

问题是 T 可以是任何类型,只有某些类型支持按位 or 运算符。

有可能constrain generic types ,以便编译器更多地了解它们的功能。例如,您可以将泛型类型约束为类、特定类的子类、接口(interface)、值类型等。但是您不能应用所需的约束,即该类型支持按位 运算符。

简而言之,解决你的问题的正确方法是使用函数重载。泛型并不能解决所有问题。

关于delphi - 在 Delphi 中用泛型替换重载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54250786/

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