Julia语言中@with_kw宏的作用是什么?
@with_kw 宏用法说明
@with_kw 是Julia第三方包 Parameters.jl 提供的工具宏,不属于Julia标准库,设计目的是简化带默认字段值的结构体定义流程。
被修饰的结构体是否为普通struct
被@with_kw修饰的结构体本质就是Julia原生的普通结构体:该宏仅在编译阶段自动生成额外的便捷构造方法,不会修改结构体本身的类型属性,完全兼容原生struct的所有特性,包括多重派发、类型参数、不可变/可变属性设置等。
示例代码中@with_kw的具体作用
原生Julia的struct默认不支持直接在定义时设置字段默认值,要实现缺省参数逻辑需要手写多层构造方法,用@with_kw后可以直接获得以下便捷能力:
- 支持在结构体定义时直接为字段声明默认值,不需要额外手写构造方法实现缺省逻辑
- 自动生成关键字参数构造函数,实例化时不需要严格按照字段定义顺序传参,未显式传入的字段会自动使用默认值填充,例如:
# 仅自定义批次大小和生成器学习率,其余参数默认使用定义时的取值 hparams = HyperParams(batch_size=64, gen_lr=0.0001)
- 额外附带配套工具能力,包括自动生成友好的结构体打印格式、支持通过
@set宏快速生成修改指定字段后的新结构体实例等。
内容的提问来源于stack exchange,提问作者logankilpatrick
相关产品推荐
相关产品推荐

