UE5.6:日志打印嵌套 TMap / TSet 时不用再套 JoinBy

要打 TMap<uint64, TSet> 的日志,以前要套两层 FString::JoinBy:

  UE_LOG(LogTemp, Display, TEXT("IdToValues: %s"), *FString::JoinBy(IdToValues, TEXT(","), [](const TPair<uint64, TSet<int32>>& Pair) {
    return FString::Printf(TEXT("{%llu:[%s]}"), Pair.Key, *FString::JoinBy(Pair.Value, TEXT(","), [](int32 Value) {
      return FString::Printf(TEXT("%d"), Value);
    }));
  }));

改用 UStrify 之后:

  UE_LOG(LogTemp, Display, TEXT("IdToValues: %s"), *UStrify::ToString(IdToValues, true));
  // 第二个参数是 Multilines

两个差别:

  1. 要敲的代码少很多。
  2. 这个 map 如果从 TMap<uint64, TArray> 改成 TMap<uint64, TSet>,JoinBy 的 lambda 参数类型必须跟着改;ToString 不用改。

这不是 LexToString(只覆盖标量),也不是 JSON / UPROPERTY 反射 / 蓝图节点。

中文:Strify/README.zh-CN.md at main · sgamerw/Strify · GitHub