gpt4 book ai didi

delphi - 子集与其超集不兼容

转载 作者:行者123 更新时间:2023-12-01 23:10:03 24 4
gpt4 key购买 nike

后续问题:Declaring a type as a subset of a set

program Project31; {$APPTYPE CONSOLE}

type
TDay = (mon, tue, wen, thu, fri, sat, sun);
TWeekday = mon..fri;

TDays = set of TDay;
TWeekdays = set of TWeekday;

TDayRec = record
Data: TDays;
WeekendData: string;
class operator Add(const A: TDayRec; B: TWeekday): TDayRec;
end;

class operator TDayRec.Add(const A: TDayRec; B: TWeekday): TDayRec;
begin
Result:= A;
Result.Data:= Result.Data + B; <<--E2008 Incompatible types
Result.Data:= Result.Data + TDay(B); <<--E2008 Incompatible types
end;

begin
end.

如何使 TWeekday(s)TDay(s) 兼容。
TWeekday 转换为 TDay 不起作用。

最佳答案

你有两个选择。您可以使用 set union operator + 要求两个操作数是兼容的集合。

Result.Data:= Result.Data + [B];

或者您可以使用intrinsic程序Include .

Include(Result.Data, B);

由于 Include 运算符将单个元素添加到集合中,因此它能够生成比 union 运算符更高效的代码。

关于delphi - 子集与其超集不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29821741/

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