首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏方方的杂货铺

    decs - 一个简洁的C++ ECS实现方案

    Metatype部分 4.1 Metatype类 namespace ecs { struct Metatype { using ConstructorFn = void(void > metatype_cache; } Metatype类完成对Component的反射支持, 很薄的一层实现了, 需要注意的是EntityId本身也是当成一个Component来处理的, 这样World ; 记录所有Metatype的静态变量, 一般我们需要获取某Component类型的Metatype的时候, 先利用MetatypeHash的编译期hash()函数获取到64位的key值后, 再通过 robin_hood的hash map来取得对应的Metatype. const Metatype* temporalMetatypeArray[32]; assert(count < 32); const Metatype

    2.3K20发布于 2021-10-29
  • 来自专栏Nodejs技术栈

    Nest.js 实战系列四:使用管道、DTO 验证入参,摆脱 if-else 的恐惧

    }: ArgumentMetadata) { console.log(`value:`, value, 'metatype: ', metatype); if (! metatype || ! this.toValidate(metatype)) { // 如果没有传入验证规则,则不验证,直接返回数据 return value; } // 将对象转换为 Class 来验证 const object = plainToClass(metatype, value); const errors = await validate(object) types.includes(metatype); } } 3.

    4.6K20发布于 2021-07-15
  • 来自专栏跟Qt君学编程

    Qt开源网络库[5]-lambda支持

    Lambda注册 (1) 通过提前注册类型到元对象系统,利用元对象系统的QVariant将std::function模板保存起来; Q_DECLARE_METATYPE(std::function< void (QNetworkReply*)>); Q_DECLARE_METATYPE(std::function<void (QByteArray)>); Q_DECLARE_METATYPE(std ::function<void (QVariantMap)>); Q_DECLARE_METATYPE(std::function<void (QString)>); Q_DECLARE_METATYPE (std::function<void (QNetworkReply::NetworkError)>); Q_DECLARE_METATYPE(std::function<void (QNetworkReply ::NetworkError, QNetworkReply *)>); Q_DECLARE_METATYPE(std::function<void (QString, QNetworkReply *)>

    1.2K21发布于 2019-07-15
  • 来自专栏CRPER折腾记

    NestJS 7.x 折腾记: (5) 管道,一个好玩的东西!比如入参校验!

    就是元数据,其实就是装饰器添加那些 async transform(value: any, { metatype }: ArgumentMetadata) { if (! metatype || ! this.toValidate(metatype)) { // 如果没有传入验证规则,则不验证,直接返回数据 return value; } // 将对象转换为 Class 来验证 const object = plainToClass(metatype, value); // 同步阻塞,返回校验结果 const errors = await types.includes(metatype); } } 配置 主入口(main.ts) import { AppModule } from '.

    1.4K30编辑于 2022-03-08
  • 【Qt 信号与槽使用自定义类型】出现 --错误:LNK2001 无法解析的外部符号

    Detection&) = default; // 必须提供拷贝构造函数 // 其他成员函数和数据成员... }; // 注册 Detection 为元类型(需在头文件末尾) Q_DECLARE_METATYPE (Detection) Q_DECLARE_METATYPE(std::vector<Detection>) // 声明 vector 的元类型 3. y) {} Detection(const Detection& other) = default; int x = 0; int y = 0; }; Q_DECLARE_METATYPE (Detection) Q_DECLARE_METATYPE(std::vector<Detection>) #endif // DETECTION_H MainWindow.h #ifndef MAINWINDOW_H

    14810编辑于 2026-01-23
  • 来自专栏图雀社区

    Nest.js 从零到壹系列(五):使用管道、DTO 验证入参,摆脱 if-else 的恐惧

    }: ArgumentMetadata) { console.log(`value:`, value, 'metatype: ', metatype); if (! metatype || ! this.toValidate(metatype)) { // 如果没有传入验证规则,则不验证,直接返回数据 return value; } // 将对象转换为 Class 来验证 const object = plainToClass(metatype, value); const errors = await validate(object) types.includes(metatype); } } 3.

    4.6K41发布于 2020-04-07
  • 来自专栏小鑫同学编程历险记

    NestJs 管道(Pipe)

    implements PipeTransform { async transform(value: any, metadata: ArgumentMetadata) { const { metatype metatype || ! this.toValidation(metatype)) { return value; } const object = plainToInstance(metatype, 所指的参数的元类型仅为Javascript原生类型的话则跳过校验,这里只关注了对定义的DTO的校验 */ private toValidation(metatype: Function): types.includes(metatype); } } 再接着将 DtoValidationPipe 管道绑定到 createUser 处理方法并作验证。

    1.4K20编辑于 2023-10-16
  • 来自专栏采云轩

    聊聊 nestjs 中的依赖注入

    metatype) { throw new UndefinedForwardRefException(scope); } const { type, dynamicMetadata , token } = await this.moduleCompiler.compile( metatype, ); // 生成token if (this.modules.has this.reflectConstructorParams(wrapper.metatype as Type<any>) : inject; reflectConstructorParams<T Object.assign(instanceHost.instance, new metatype(...instances)) : new metatype(...instances 这里的 new metatype(...instances) 把依赖项的实例作为参数全部传入。

    3.8K20编辑于 2022-01-18
  • 来自专栏Nest.js 实战系列

    Nest.js 实战 (四):利用 Pipe 管道实现数据验证和转换

    Injectable() export class ValidationPipe implements PipeTransform { async transform(value: any, { metatype metatype || ! this.toValidate(metatype)) { // 如果没有传入验证规则,则不验证,直接返回数据 return value; } // 将对象转换为 Class 来验证 const object = plainToClass(metatype, value); const errors = await validate(object types.includes(metatype); } } 3、 main.ts 中全局注册: import { NestFactory } from '@nestjs/core'; import

    77210编辑于 2025-08-14
  • 来自专栏全栈程序员必看

    Luajit 概述

    .ffi.cast:lua类型转换成CType类型 local LuaStr = “abc” local CStr = ffi.cast(“const char*”,LuaStr) 3.ffi.metatype a.y*a.y) end, __index = { area = function(a) return a.x*a.x + a.y*a.y end, }, } point = ffi.metatype (“point_t”, mt) –point = ffi.metatype(“point_t”, {}) — wrong 调用了metatype后 point_t的元表不可再更改 local a =

    2.2K10编辑于 2022-11-08
  • 来自专栏跟Qt君学编程

    注册自定义类型到Qt元对象系统中

    注册自定义结构体为例 1.使用Q_DECLARE_METATYPE标记自定义类型; #include <QMetaType> struct MyStruct { QString name ; QString color; }; Q_DECLARE_METATYPE(MyStruct) 2.在main函数中使用qRegisterMetaType注册自定义类型到元对象系统中

    1.8K10发布于 2019-07-15
  • 来自专栏Swift社区

    苹果被起诉!市值一夜蒸发8000亿元 | Swift 周报 issue 50

    Swift论坛1) 提议Metatype Keypaths内容概括Metatype Keypaths提议称为 “Metatype Keypaths” 的提议由艾米丽特·卡尔和保尔·耶斯基夫提出。 动机为了添加 metatype keypaths 到 Swift 语言中,该提议旨在解决挑战并改善语言语义。 该提议指出,metatype keypaths 曾在提议 SE-0254 中探讨过,并被推荐作为未来方向。 然而,与实例成员不同,可变静态属性的键路将遵守 ReferenceWritableKeyPath 协议,因为 metatype 是引用类型。 有些开发者提出了采用 metatype keypaths 对源代码兼容性的影响,而另一些开发者提出了对 Equatable对metatype keypaths 的行为。

    57232编辑于 2024-07-01
  • 【Qt QObject::connect: Cannot queue arguments of type ‘your class‘】

    此外,如果你使用的是C++11或更新的版本,并且你的编译器支持auto类型推断和decltype关键字,你可以使用Q_DECLARE_METATYPE宏和qRegisterMetaType()函数来注册类型 ,如下所示: struct yourclass{ // ... }; Q_DECLARE_METATYPE(yourclass) // 在 main 函数或任何初始化代码中注册该类型 int

    15910编辑于 2026-01-23
  • 来自专栏开发与安全

    《Python 源码剖析》一些理解以及勘误笔记(2)

    ->tp_basicsize + metatype->tp_itemsize,从 typeobject.c 中的定义可以看到实际上就是  sizeof(PyHeapTypeObject) + sizeof tp_dict. */ static PyObject * type_getattro(PyTypeObject *type, PyObject *name) {     PyTypeObject *metatype  */     meta_attribute = _PyType_Lookup(metatype, name);  // PyType_Type     if (meta_attribute ! );         }     }     /* No data descriptor found on metatype.  );         return res;     }     /* If an ordinary attribute was found on the metatype, return it now

    1.5K00发布于 2017-12-28
  • 来自专栏小鑫同学编程历险记

    快速打开 Nestjs 的世界

    ArgumentMetadata) { console.log('value', value); // 2 console.log('metadata', metadata); // { metatype metatype || ! this.toValidate(metatype)) { return value; } // ② 将 value 和 元类型 转为实例对象 const object = plainToInstance(metatype, value); // ③ 通过 validate 验证结果 const errors = await validate(object types.includes(metatype); } } 在绑定这个验证管道时还可以同下面这样做,因为这个处理函数仅接收这一个参数: @Post('create') create(@Body(new

    1.8K10编辑于 2023-12-04
  • 来自专栏跟Qt君学编程

    Qt官方示例-自定义类型

    为了使该类型可以与QVariant一起使用,我们使用Q_DECLARE_METATYPE宏对其进行声明: Q_DECLARE_METATYPE(Message);   此外,为了让Message对象可在调试输出流时都能打印

    1.6K20发布于 2020-03-03
  • 【Qt Qt的信号和槽传递机制 如何支持 std库包含的数据类型】

    vector<int> vec = data.value<std::vector<int>>(); // 处理数据 } 自定义数据类型注册 对于一些特定的标准库类型,你可以通过Q_DECLARE_METATYPE 例如: Q_DECLARE_METATYPE(std::vector<int>) int main(int argc, char *argv[]) { QApplication app(argc

    11410编辑于 2026-01-23
  • 来自专栏AhDung

    SqlParameter类中的两对好基友:SqlDbType与DbType、SqlValue与Value

    通过反编,发现SqlDbType和DbType是通过一个叫MetaType的类实现的私通(这个类是internal的,所以外部不能访问),而SqlValue和Value则是通过SqlParameter类中的一个私有字段

    78920发布于 2018-09-13
  • 来自专栏jiajia_deng

    Qt 注册自定义数据类型提供信号和槽函数传递参数

    要想在 Qt 的信号和槽函数之间传递自定义类型,可以先将自己的自定义类型注册一下,使用如下代码: Q_DECLARE_METATYPE(nim::DocTransInfo) nim::DocTransInfo

    6.2K20发布于 2018-12-18
  • 来自专栏神光的编程秘籍

    一个参数验证,学会 Nest.js 的两大机制:Pipe、ExceptionFilter

    Injectable() export class MyValidationPipe implements PipeTransform<any> { async transform(value: any, { metatype metatype) { return value; } const object = plainToClass(metatype, value); const errors

    1.8K10编辑于 2021-12-29
领券