当前位置: 首页 > news >正文

理解 plank 自动生成的 copyWithBlock: 方法

当你使用 plank 命令自动生成一个类时

./plank --objc_class_prefix=PUG --no_runtime --no_recursive user.json

分析

在 JSON 目录下, 执行如上命令后, 生成的 PUGUser 对象, 会自带 copyWithBlock: 方法, 这个方法是用来做什么的 ?

copyWithBlock: (注意末尾有一个冒号,因为它需要一个 Block 参数)是 Plank 为 每一个不可变模型类自动生成的“便捷变异”接口。它的核心作用可以概括为:

  1. 在保持原对象不可变的前提下做局部修改

    • Plank 生成的 PUGUser 属性全部是 readonly。想改动其中某个字段时,你不能直接赋值,只能构造一个新实例。
    • copyWithBlock: 会先用当前对象创建一个 Builder (PUGUserBuilder),把现有属性拷贝过去 → 你在 Block 里改 Builder 的可写属性 → Plank 再把 Builder build 成一个全新的 PUGUser 并返回。

相关文章:

  • java函数内的变量问题
  • 永久免费!专为 Apache Doris 打造的可视化数据管理工具 SelectDB Studio V1.1.0 重磅发布!
  • 素数筛(欧拉筛算法)
  • 游戏引擎学习第288天:继续完成Brains
  • 遨游科普:三防平板是什么?有什么功能?
  • 使用Langfuse和RAGAS,搭建高可靠RAG应用
  • AI编码代理的崛起 - AlphaEvolve与Codex的对比分析引言
  • Redis 事务与管道:原理、区别与应用实践
  • 深入理解桥接模式:解耦抽象与实现的设计艺术
  • 给你的matplotlib images添加scale Bar
  • DataX:一个开源的离线数据同步工具
  • 计算机视觉与深度学习 | Python实现EEMD-LSTM时间序列预测(完整源码和数据)
  • Predict Podcast Listening Time-(回归+特征工程+xgb)
  • 基于C语言的歌曲调性检测技术解析
  • NX二次开发——设置对象的密度(UF_MODL_set_body_density)
  • redisson分布式锁实现原理归纳总结
  • JAVA EE_HTTP
  • 仅需三张照片即可生成沉浸式3D购物体验?谷歌电商3D方案全解析
  • 信息系统项目管理师高级-软考高项案例分析备考指南(2023年案例分析)
  • 【通用智能体】Search Tools:Open Deep Research 项目实战指南
  • 浙江美术馆馆长人民日报撰文:打开更辽阔的审美场域
  • 竞彩湃|欧联杯决赛前,曼联、热刺继续划水?
  • 媒体:中国女排前队长朱婷妹妹被保送浙大受质疑,多方回应
  • 会谈时间迟迟未定、核心议题存在分歧,俄乌“土耳其谈判”一波三折
  • 埃尔多安:愿在土耳其促成俄乌领导人会晤
  • 最高降九成!特朗普签署降药价行政令落地存疑,多家跨国药企股价收涨