跟着官方文档底层学习 二元谓词 中的 匿名函数

一.UE匿名函数 的初步认识。

就是随便在某个地方定义后就能直接使用。

我们在TestLambad里定义一个匿名函数。

void AWXArrayActor::TestLambda()
{
	//匿名函数 用于随插随用的  [](){};它的入参()
	int32 OriginNum = 100;
	auto LambdaMethod = [OriginNum](int32 InNum, int32 InAddNum)->int32 {   //值捕获,值拷贝到匿名函数。返回一个int32。

		int32 Max = InNum + InAddNum;
		Max += 100;
		return Max;
		};
	int32 Calculate1 = LambdaMethod(1, 3);
	int32 Calculate2 = CalculateMethod(10, 2);
}

再在这里定义一个正常函数。

int32 AWXArrayActor::CalculateMethod(int32 InNum, int32 InAddNum)
{
	int32 Max = InNum + InAddNum;
	Max += 100;
	return int32();
}

在TestLambda测试得到的效果是一样的。有点回调的意思,而且你的断点,直接打不到匿名函数里。

二.通过二元谓词,排序结构体

在结构体最后,重载 < 运算符,用Id排序。

USTRUCT()
struct FXArrayStructInfo
{
	GENERATED_USTRUCT_BODY()
public:
	FXArrayStructInfo()
	{

	};
	FXArrayStructInfo(int32 inID,int32 money)
		:ID(inID),Money(money)
	{
		ID = inID;
		Money = money;
	};
	~FXArrayStructInfo()
	{
	};
	int32 ID = 0;

	int32 Money = 0;
	bool operator < (const FXGEqualStructInfo& other) const
	{
		return ID < other.ID ? true : false;
	}
};

测试,但在MyTeam2里通过二元谓词,用Money排序

void AWXArrayActor::WXSortStruct_StableSort()
{
	TArray MyTeams1;
	MyTeams1.Add({0,1});
	MyTeams1.Add({99,9 });
	MyTeams1.Add({ 66,3 });
	MyTeams1.Add({ 80,6 });	
	TArray MyTeams2;
	MyTeams2.Add({ 0,1 });
	MyTeams2.Add({ 99,9 });
	MyTeams2.Add({ 66,3 });
	MyTeams2.Add({ 80,6 });
	//MyTeams1.StableSort();
	MyTeams2.StableSort([](const FXArrayStructInfo& A,const FXArrayStructInfo& B)->bool{
	
		return A.Money < B.Money ? true:false;
	});
}

我们就能看到,截然不同的排序

跟着官方文档底层学习 二元谓词 中的 匿名函数_第1张图片

你可能感兴趣的:(学习,ue5,c++)