<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>第二篇 语言主干 on 编程那些事儿</title><link>https://before80.github.io/prgms/Swift/basic/Part-2-Language-Core/</link><description>Recent content in 第二篇 语言主干 on 编程那些事儿</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Sat, 19 Sep 2026 21:54:25 +0800</lastBuildDate><atom:link href="https://before80.github.io/prgms/Swift/basic/Part-2-Language-Core/index.xml" rel="self" type="application/rss+xml"/><item><title>第4章 常量、变量与数值：let 的哲学和一个没有隐式转换的世界</title><link>https://before80.github.io/prgms/Swift/basic/Part-2-Language-Core/Chapter-04-Constants-Variables-and-Numbers/</link><pubDate>Mon, 14 Sep 2026 22:30:00 +0800</pubDate><guid>https://before80.github.io/prgms/Swift/basic/Part-2-Language-Core/Chapter-04-Constants-Variables-and-Numbers/</guid><description>&lt;h1 id="第四章常量变量与数值let-的哲学和一个没有隐式转换的世界"&gt;第四章：常量、变量与数值：let 的哲学和一个没有隐式转换的世界&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;别的语言先用一章教你怎么声明变量，Swift 想教你的第一件事却是&amp;quot;尽量别用变量&amp;quot;。这不是洁癖，&lt;code&gt;let&lt;/code&gt; 用得多，代码能推理的地方就多、能被编译器优化的地方就多、将来跟并发打交道时被卡住的概率也小。这一章还会顺手讲清 Swift 最容易被骂、但也最省心的两个设计：&lt;strong&gt;没有隐式转换&lt;/strong&gt;和&lt;strong&gt;溢出就崩&lt;/strong&gt;。&lt;/p&gt;</description></item><item><title>第5章 字符串与字符：Unicode 的温柔陷阱</title><link>https://before80.github.io/prgms/Swift/basic/Part-2-Language-Core/Chapter-05-Strings-and-Characters/</link><pubDate>Mon, 14 Sep 2026 22:30:00 +0800</pubDate><guid>https://before80.github.io/prgms/Swift/basic/Part-2-Language-Core/Chapter-05-Strings-and-Characters/</guid><description>&lt;h1 id="第五章字符串与字符unicode-的温柔陷阱"&gt;第五章：字符串与字符：Unicode 的温柔陷阱&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;刚上手 Swift 的人，几乎都会在同一个地方撞一下：&lt;code&gt;str[0]&lt;/code&gt; 报错。报错信息还挺不客气——&amp;ldquo;不能用 &lt;code&gt;Int&lt;/code&gt; 给 &lt;code&gt;String&lt;/code&gt; 下标&amp;rdquo;。这不是编译器找茬，而是 Swift 在逼你面对一个很多语言都假装不存在的问题：&lt;strong&gt;在 Unicode 世界里，&amp;ldquo;第 0 个字符&amp;quot;到底是什么？&lt;/strong&gt; 这一章我们把这件事讲透。&lt;/p&gt;</description></item><item><title>第6章 正则表达式：字面量、Regex 与 RegexBuilder</title><link>https://before80.github.io/prgms/Swift/basic/Part-2-Language-Core/Chapter-06-Regular-Expressions/</link><pubDate>Mon, 14 Sep 2026 22:30:00 +0800</pubDate><guid>https://before80.github.io/prgms/Swift/basic/Part-2-Language-Core/Chapter-06-Regular-Expressions/</guid><description>&lt;h1 id="第六章正则表达式字面量regex-与-regexbuilder"&gt;第六章：正则表达式：字面量、Regex 与 RegexBuilder&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;在大多数语言里，正则是一串&amp;quot;写在字符串里的天书&amp;quot;，编译器对它一无所知：写错了、捕获组数错了，只有运行时才告诉你。Swift 从 5.7 起把它变成了一等语言特性——正则有类型、捕获有名字、错误能在编译期发现。这一章讲三件事：怎么写字面量、怎么取捕获结果、以及怕正则的人应该试试的 &lt;code&gt;RegexBuilder&lt;/code&gt;。&lt;/p&gt;</description></item><item><title>第7章 运算符与表达式：从取余、位运算到自定义运算符</title><link>https://before80.github.io/prgms/Swift/basic/Part-2-Language-Core/Chapter-07-Operators-and-Expressions/</link><pubDate>Mon, 14 Sep 2026 22:30:00 +0800</pubDate><guid>https://before80.github.io/prgms/Swift/basic/Part-2-Language-Core/Chapter-07-Operators-and-Expressions/</guid><description>&lt;h1 id="第七章运算符与表达式从取余位运算到自定义运算符"&gt;第七章：运算符与表达式：从取余、位运算到自定义运算符&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;大部分运算符每个语言都差不多，Swift 在这里的特别之处是两件：&lt;strong&gt;它允许你定义自己的运算符并声明优先级&lt;/strong&gt;（写 DSL 和数值库时很爽），以及**&lt;code&gt;if&lt;/code&gt; 和 &lt;code&gt;switch&lt;/code&gt; 现在可以直接当表达式用**——从此不用为了给常量赋个值而写一坨 &lt;code&gt;let x: Int&lt;/code&gt; 再在分支里赋值。&lt;/p&gt;</description></item><item><title>第8章 元组、类型别名与基础类型判断</title><link>https://before80.github.io/prgms/Swift/basic/Part-2-Language-Core/Chapter-08-Tuples-Typealias-and-Type-Checking/</link><pubDate>Mon, 14 Sep 2026 22:30:00 +0800</pubDate><guid>https://before80.github.io/prgms/Swift/basic/Part-2-Language-Core/Chapter-08-Tuples-Typealias-and-Type-Checking/</guid><description>&lt;h1 id="第八章元组类型别名与基础类型判断"&gt;第八章：元组、类型别名与基础类型判断&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;有时候你只想把两个值捆在一起传出去，为此专门定义一个结构体显得太重。元组就是 Swift 给你的“临时小纸箱”：轻、直接、不需要声明类型。但它也有边界——不是万能容器，更不是结构体的替代品。这一章把元组、&lt;code&gt;typealias&lt;/code&gt; 和类型判断的入门用法一次说清。&lt;/p&gt;</description></item><item><title>第9章 可选值：Swift 安全感的源头</title><link>https://before80.github.io/prgms/Swift/basic/Part-2-Language-Core/Chapter-09-Optionals/</link><pubDate>Mon, 14 Sep 2026 22:30:00 +0800</pubDate><guid>https://before80.github.io/prgms/Swift/basic/Part-2-Language-Core/Chapter-09-Optionals/</guid><description>&lt;h1 id="第九章可选值swift-安全感的源头"&gt;第九章：可选值：Swift 安全感的源头&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;几乎所有语言都被“这个值可能不存在”折磨过。Swift 选择把这种可能性写进类型系统：&lt;code&gt;Int&lt;/code&gt; 和 &lt;code&gt;Int?&lt;/code&gt; 是两个不同的类型。编译器不会让你忘记处理“没有值”的情况，这就是 Swift 让人安心的核心原因之一。&lt;/p&gt;</description></item><item><title>第10章 集合：Array、Dictionary 与 Set</title><link>https://before80.github.io/prgms/Swift/basic/Part-2-Language-Core/Chapter-10-Collections/</link><pubDate>Mon, 14 Sep 2026 22:30:00 +0800</pubDate><guid>https://before80.github.io/prgms/Swift/basic/Part-2-Language-Core/Chapter-10-Collections/</guid><description>&lt;h1 id="第十章集合arraydictionary-与-set"&gt;第十章：集合：Array、Dictionary 与 Set&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;集合是程序的收纳间。数组排好队，字典按名字找，集合负责去重。它们都能装很多东西，但最重要的共同点其实不是“能装”：在 Swift 里，把集合赋给另一个变量，得到的是独立的副本，而不是指向同一堆数据的遥控器。&lt;/p&gt;</description></item><item><title>第11章 控制流（一）：分支、循环与跳转</title><link>https://before80.github.io/prgms/Swift/basic/Part-2-Language-Core/Chapter-11-Control-Flow-Part-1/</link><pubDate>Mon, 14 Sep 2026 22:30:00 +0800</pubDate><guid>https://before80.github.io/prgms/Swift/basic/Part-2-Language-Core/Chapter-11-Control-Flow-Part-1/</guid><description>&lt;h1 id="第十一章控制流一分支循环与跳转"&gt;第十一章：控制流（一）：分支、循环与跳转&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;程序真正开始“活”起来，是它会根据条件走不同路线、把同一段逻辑重复执行。控制流没有玄学，但 Swift 在细节上很讲究：条件必须是真正的 &lt;code&gt;Bool&lt;/code&gt;，循环标签能让你从深层嵌套里优雅脱身，&lt;code&gt;if&lt;/code&gt; 与 &lt;code&gt;switch&lt;/code&gt; 还能直接产出值。&lt;/p&gt;</description></item><item><title>第12章 控制流（二）：switch 与八类模式</title><link>https://before80.github.io/prgms/Swift/basic/Part-2-Language-Core/Chapter-12-Control-Flow-Part-2/</link><pubDate>Mon, 14 Sep 2026 22:30:00 +0800</pubDate><guid>https://before80.github.io/prgms/Swift/basic/Part-2-Language-Core/Chapter-12-Control-Flow-Part-2/</guid><description>&lt;h1 id="第十二章控制流二switch-与八类模式"&gt;第十二章：控制流（二）：switch 与八类模式&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;很多语言的 &lt;code&gt;switch&lt;/code&gt; 只是“值等于多少”的多分支写法。Swift 把它升级成了模式匹配系统：你可以检查范围、拆开元组、提取枚举关联值、匹配可选值、判断类型，甚至调用自定义匹配函数。更省心的是，每个 &lt;code&gt;case&lt;/code&gt; 匹配后自动结束，不需要 &lt;code&gt;break&lt;/code&gt; 防穿透。&lt;/p&gt;</description></item><item><title>第13章 函数：参数标签、inout 与函数类型</title><link>https://before80.github.io/prgms/Swift/basic/Part-2-Language-Core/Chapter-13-Functions/</link><pubDate>Mon, 14 Sep 2026 22:30:00 +0800</pubDate><guid>https://before80.github.io/prgms/Swift/basic/Part-2-Language-Core/Chapter-13-Functions/</guid><description>&lt;h1 id="第十三章函数参数标签inout-与函数类型"&gt;第十三章：函数：参数标签、&lt;code&gt;inout&lt;/code&gt; 与函数类型&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;函数是把一段逻辑装进盒子并给它取名的工具。Swift 的特别之处在于，调用处的参数标签是接口设计的一部分：&lt;code&gt;move(from:to:)&lt;/code&gt; 读起来像句子；函数本身又是一等公民，可以赋给变量、当作参数、从函数里返回。闭包、回调和 SwiftUI 都建立在这套机制上。&lt;/p&gt;</description></item><item><title>第14章 闭包：捕获、逃逸与 @autoclosure</title><link>https://before80.github.io/prgms/Swift/basic/Part-2-Language-Core/Chapter-14-Closures/</link><pubDate>Mon, 14 Sep 2026 22:30:00 +0800</pubDate><guid>https://before80.github.io/prgms/Swift/basic/Part-2-Language-Core/Chapter-14-Closures/</guid><description>&lt;h1 id="第十四章闭包捕获逃逸与-autoclosure"&gt;第十四章：闭包：捕获、逃逸与 &lt;code&gt;@autoclosure&lt;/code&gt;&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;闭包是“随身携带的代码块”。它可以脱离定义位置继续使用，还能记住定义时附近的变量。语法轻得像随手写的表达式，但捕获、逃逸和内存生命周期又足够深，值得你在这里慢下来。&lt;/p&gt;</description></item><item><title>第15章 错误处理：throws、do-catch 与类型化抛出</title><link>https://before80.github.io/prgms/Swift/basic/Part-2-Language-Core/Chapter-15-Error-Handling/</link><pubDate>Mon, 14 Sep 2026 22:30:00 +0800</pubDate><guid>https://before80.github.io/prgms/Swift/basic/Part-2-Language-Core/Chapter-15-Error-Handling/</guid><description>&lt;h1 id="第十五章错误处理throwsdo-catch-与类型化抛出"&gt;第十五章：错误处理：&lt;code&gt;throws&lt;/code&gt;、&lt;code&gt;do-catch&lt;/code&gt; 与类型化抛出&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;错误处理不是给代码贴创可贴，而是把“这件事可能失败”写进函数签名。Swift 用 &lt;code&gt;throws&lt;/code&gt; 明确标出风险，用 &lt;code&gt;do-catch&lt;/code&gt; 强迫调用者面对风险。到了 Swift 6，你还可以把失败类型收窄，让编译器和你一起守住错误边界。&lt;/p&gt;</description></item><item><title>第15B章 语法糖与特殊写法：语言替你少打字的地方</title><link>https://before80.github.io/prgms/Swift/basic/Part-2-Language-Core/Chapter-15B-Sugar-and-Special-Forms/</link><pubDate>Tue, 15 Sep 2026 09:30:00 +0800</pubDate><guid>https://before80.github.io/prgms/Swift/basic/Part-2-Language-Core/Chapter-15B-Sugar-and-Special-Forms/</guid><description>&lt;h1 id="第-15b-章语法糖与特殊写法语言替你少打字的地方"&gt;第 15B 章：语法糖与特殊写法：语言替你少打字的地方&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;语法糖不是零食，是编译器替你省略的那几百次机械操作。这一章把散落在前面十几章里的“同一个意思，更短的写法”集中起来，也补上那些你在别人的 Swift 代码里一定会撞见、却很少有教程专门讲的特殊形式。糖要会吃，也要知道它包的到底是什么。&lt;/p&gt;</description></item></channel></rss>