模式(一) – MVVM
MVVM 工作原理 MVVM - 模型、视图、ViewModel,理解 MVVM 的最佳方式是这样的:除了创建一个新类 ViewModel 负责将模型中的数据转换为视图中的格式化值之外,它与 MVC 别无二致。 MVVM 模式由三...
macOS 实现 PPT 批量转 PDF
本文主要利用 macOS 的 自动操作 以及 AppleScript 来实现 PPT 批量转 PDF。 AppleScript 的运行脚本 on run {input, parameters} set theOutput to {} tell application 'Microsoft PowerPoint...
Ubuntu 24.04 LTS 安装 Python
PPA 安装 Python更新 Ubuntu安装 Python 之前,将 Ubuntu 更新到最新。# 更新软件包列表 sudo apt update # 升级软件包 sudo apt upgrade 导入 Python 的 PPAdeadsnakes 团队维护了一个专门的 L...
环境(一) – 从环境中读取
环境 (environment) 本质上,它是⼀种内置的依赖注⼊ (dependency injection) 技术。 下⾯这个例⼦中,当我们在 VStack 上设置字体时,它会传播到两个 Text 视图中去,并改变它们的外观: Font ...
环境(二) – 自定义环境键
环境键的自定义需要两个必要步骤和一个可选步骤: 实现⼀个⾃定义的 EnvironmentKey。 在 EnvironmentValues 上添加扩展,并提供⼀个属性,让我们能在环境中获取和设置该值。 (可选) 在 View 上...
环境(三) – 自定义组件样式
本文以 badge 为例,实现自定义组件样式的具体步骤: 创建一个 BadgeStyle 协议为角标样式定义接口。 为角标样式创建一个环境变键。 在 badge 修饰符中使用这个自定义角标样式。 ⻆标样式的协议...
语法(三) – guard
guard 语句的主要用法有以下几种: 提前返回 减少缩进级别 高Happy Path可见性 提前返回 guard 用于提前返回,如果某些先决条件未满足,则退出函数。 func giveAward(to name: String) { guard n...