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

理解 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 并返回。
http://www.xdnf.cn/news/7024.html

相关文章:

  • C++(初阶)(十八)——AVL树
  • 深入解析:如何基于开源OpENer开发EtherNet/IP从站服务
  • 深入浅出IIC协议 - 从总线原理到FPGA实战开发 -- 第一篇:I2C总线协议深度解剖
  • 广和通L610模块通过AT指令访问服务器方案:嵌赛使用
  • 蓝桥杯-不完整的算式
  • select语句的书写顺序
  • DAY 23 训练
  • Vue框架
  • windows 10 做服务器 其他电脑无法访问,怎么回事?
  • 深度学习模型入门:从基础到前沿
  • leetcode 239. 滑动窗口最大值
  • MySQL初阶:sql事务和索引
  • 电子电路:什么是高频电路以及都有哪些应用?
  • 手机打电话时由对方DTMF响应切换多级IVR语音应答(二)
  • UDP的单播组播与广播
  • 使用 Python 打造一个强大的文件系统结构创建器
  • 前脚收购 Windsurf 后,OpenAI 深夜发布 Codex。
  • 基于Yolov8+PyQT的老人摔倒识别系统源码
  • 计算机视觉与深度学习 | Python实现EMD-CNN-LSTM时间序列预测(完整源码、数据、公式)
  • 基于CentOS7制作OpenSSL 1.1的RPM包
  • Webpack DefinePlugin插件介绍(允许在编译时创建JS全局常量,常量可以在源代码中直接使用)JS环境变量
  • HarmonyOS:重构万物互联时代的操作系统范式
  • 6.1.1图的基本概念
  • 在宝塔中使用.NET环境管理部署 .NET Core项目
  • GO语言语法---if语句
  • VSCode launch.json 配置参数详解
  • 软件调试纵横谈-17-win32堆的调试支持
  • Android开发——轮播图引入
  • Redis设计与实现——Redis命令参考与高级特性
  • impala