update 02/02

This commit is contained in:
numbbbbb
2014-06-07 16:05:21 +08:00
parent f79723824f
commit 670f4c302a
40 changed files with 431 additions and 57 deletions

View File

@ -46,7 +46,7 @@
<div class="book" data-level="1.1" data-basepath=".." data-revision="1402067788809"> <div class="book" data-level="1.1" data-basepath=".." data-revision="1402128272564">
<div class="book-header"> <div class="book-header">
<!-- Actions Left --> <!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a> <a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -576,7 +576,7 @@
<div class="page-inner"> <div class="page-inner">
<section class="normal" id="section-gitbook_166"> <section class="normal" id="section-gitbook_45">
<h1 id="-swift">关于 Swift</h1> <h1 id="-swift">关于 Swift</h1>
<p>Swift 是一种新的编程语言,用于编写 iOS 和 OS X 应用程序。Swift 结合了 C 和 Objective-C 的优点并且不受C的兼容性的限制。Swift 使用安全的编程模式并添加了很多新特性这将使编程更简单扩展性更强也更有趣。除此之外Swift 还支持人见人爱的 Cocoa 和 Cocoa Touch 框架。拥有了这些特性Swift将重新定义软件开发。</p> <p>Swift 是一种新的编程语言,用于编写 iOS 和 OS X 应用程序。Swift 结合了 C 和 Objective-C 的优点并且不受C的兼容性的限制。Swift 使用安全的编程模式并添加了很多新特性这将使编程更简单扩展性更强也更有趣。除此之外Swift 还支持人见人爱的 Cocoa 和 Cocoa Touch 框架。拥有了这些特性Swift将重新定义软件开发。</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="1.2" data-basepath=".." data-revision="1402067788809"> <div class="book" data-level="1.2" data-basepath=".." data-revision="1402128272564">
<div class="book-header"> <div class="book-header">
<!-- Actions Left --> <!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a> <a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -576,7 +576,7 @@
<div class="page-inner"> <div class="page-inner">
<section class="normal" id="section-gitbook_167"> <section class="normal" id="section-gitbook_46">
<h1 id="swift-">Swift 初见</h1> <h1 id="swift-">Swift 初见</h1>
<p>本页内容包括:</p> <p>本页内容包括:</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="1" data-basepath=".." data-revision="1402067788809"> <div class="book" data-level="1" data-basepath=".." data-revision="1402128272564">
<div class="book-header"> <div class="book-header">
<!-- Actions Left --> <!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a> <a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -576,7 +576,7 @@
<div class="page-inner"> <div class="page-inner">
<section class="normal" id="section-gitbook_168"> <section class="normal" id="section-gitbook_47">
<h1 id="-swift">欢迎使用 Swift</h1> <h1 id="-swift">欢迎使用 Swift</h1>
<p>在本章中您将了解 Swift 的特性和开发历史,并对 Swift 有一个初步的了解。</p> <p>在本章中您将了解 Swift 的特性和开发历史,并对 Swift 有一个初步的了解。</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.1" data-basepath=".." data-revision="1402067788809"> <div class="book" data-level="2.1" data-basepath=".." data-revision="1402128272564">
<div class="book-header"> <div class="book-header">
<!-- Actions Left --> <!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a> <a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -576,7 +576,7 @@
<div class="page-inner"> <div class="page-inner">
<section class="normal" id="section-gitbook_170"> <section class="normal" id="section-gitbook_49">
<h1 id="-">基础部分</h1> <h1 id="-">基础部分</h1>
<p>Swift 是 iOS 和 OS X 应用开发的一门新语言。然而,如果你有 C 或者 Objective-C 开发经验的话,你会发现 Swift 的很多内容都是你熟悉的。</p> <p>Swift 是 iOS 和 OS X 应用开发的一门新语言。然而,如果你有 C 或者 Objective-C 开发经验的话,你会发现 Swift 的很多内容都是你熟悉的。</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.2" data-basepath=".." data-revision="1402067788809"> <div class="book" data-level="2.2" data-basepath=".." data-revision="1402128272564">
<div class="book-header"> <div class="book-header">
<!-- Actions Left --> <!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a> <a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -576,6 +576,318 @@
<div class="page-inner"> <div class="page-inner">
<section class="normal" id="section-gitbook_60">
<h1 id="-">基础运算符</h1>
<p>运算符是检查, 改变, 合并值的特殊符号或短语. 例如, 加号 <code>+</code> 把计算两个数的和(如 <code>let i = 1 + 2</code>). 复杂些的运行算包括逻辑与<code>&amp;&amp;</code>(如 <code>if enteredDoorCode &amp;&amp; passedRetinaScan</code>), 还有自增运算符 <code>++i</code> 这样让自身加一的便捷运算.</p>
<p>Swift支持大部分标准C语言的运算符, 且改进许多特性来减少常规编码错误. 如, 赋值符 <code>=</code> 不返回值, 以防止错把等号 <code>==</code> 写成赋值号 <code>=</code> 而导致Bug. 数值运算符( <code>+</code> , <code>-</code>, <code>*</code>, <code>/</code>, <code>%</code>等)会检测并不允许值溢出, 以此来避免保存变量时由于变量大于或小于其类型所能承载的范围时导致的异常结果. 当然允许你选择使用Swift的溢出运算符来玩溢出. 具体使用请移步<a href="Overflow Operators">溢出运算符</a>.</p>
<p>区别于C语言, 在Swift中你可以对浮点数进行取余运算( <code>%</code> ), 还提供了C语言没有的表达两数之间的值的区间运算符, ( <code>a..b</code><code>a...b</code> ), 这方便我们表达一个区间内的数值.</p>
<p>本章节只描述了Swift中的简单运算符, <a href="http://#" target="_blank">高级运算符</a>包含了高级运算符,及如何自定义运算符, 及如何进行自定义类型的运算符重载.</p>
<h1 id="-">术语</h1>
<p>运算符有一目, 双目和三目运算符.</p>
<p>一目运算符对单一操作对象操作, 如 <code>-a</code>.</p>
<p>一目运算符分前置符和后置运算符, 前置运算符需紧排操作对象之前, 如 <code>!b</code>, 后置运算符需紧跟操作对象之后,如 <code>i++</code>,</p>
<p>双目运算符操作两个操作对象, 如 <code>2 + 3</code>. 是中置的, 因为它们出现在两个操作对象之间.</p>
<p>三目运算符操作三个操作对象, 和C语言一样, Swift只有一个三目运算符, 就是三目条件运算符 <code>a ? b : c</code>.</p>
<p>受运算符影响的值叫操作数, 在表达式 <code>1 + 2</code> 中, 加号 <code>+</code> 是双目运算符, 它的两个操作数是值 <code>1</code><code>2</code>.</p>
<h1 id="-">赋值运算符</h1>
<p>赋值运算 <code>a = b</code>, 表示用 <code>b</code> 的值来初始化或更新 <code>a</code> 的值.</p>
<pre><code class="lang-swift">let b = 10
var a = 5
a = b
// a 现在等于 10
</code></pre>
<p>如果赋值的右边是一个多元组, 它的元素可以马上被分解多个变量或变量</p>
<pre><code>let (x, y) = (1, 2)
// 现在 x 等于 1, y 等于 2
</code></pre><p>与C语言和Objective-C不同, Swift的赋值操作并不返回任何值. 所以以下代码是错误的:</p>
<pre><code class="lang-swift">if x = y {
// 此句错误, 因为 x = y 并不返回任何值
}
</code></pre>
<p>这个特性使得你不无法把<code>==</code>错写成<code>=</code>了, 由于<code>if x = y</code>是错误代码, Swift从底层帮你避免了这些代码错误.</p>
<h1 id="-">数值运算</h1>
<p>Swift让所有数值类型都支持了基本的四则运算:</p>
<ul>
<li>加法 <code>+</code></li>
<li>减法 <code>-</code></li>
<li>乘法 <code>*</code></li>
<li>除法 <code>/</code></li>
</ul>
<pre><code class="lang-swift">1 + 2 // 等于 3
5 - 3 // 等于 2
2 * 3 // 等于 6
10.0 / 2.5 // 等于 4.0
</code></pre>
<p>与C语言和Objective-C不同的是, Swift默认不允许在数值运算中出现溢出情况. 但你可以使用Swift的溢出运算符来达到你有目的的溢出, (如 <code>a &amp;+ b</code> ). 详情请移步: <a href="Overflow Operators">溢出运算符</a>.</p>
<p>加法操作 <code>+</code> 也用于字符串的拼接:</p>
<pre><code class="lang-swift">&quot;hello, &quot; + &quot;world&quot; // 等于 &quot;hello, world&quot;
</code></pre>
<p>两个字符类型或一个字符类型和一个字符串类型, 相加会生成一个新的字符串类型:</p>
<pre><code class="lang-swift">let dog: Character = &quot;d&quot;
let cow: Character = &quot;c&quot;
let dogCow = dog + cow
// 译者注: 原谅的引号内是很可爱的小狗和小牛, 但win os下不支持表情字符, 所以改成了普通字符
// dogCow 现在是 &quot;dc&quot;
</code></pre>
<p>详细请点击 <a href="http://#" target="_blank">字符,字符串的拼接</a>.</p>
<h1 id="-">求余运算</h1>
<p>求余运算 <code>a % b</code> 是计算 <code>b</code> 的多少倍刚刚好可以容入 <code>a</code> , 多出来的那部分叫余数.</p>
<blockquote>
<p>注意</p>
<p>求余运算(%)在其他语言也叫取模运算. 然而严格说来, 我们看该运算符对负数的操作结果, <code>求余</code><code>取模</code> 更合适些.</p>
</blockquote>
<p>我们来谈谈取余是怎么回事, 计算 <code>9 % 4</code>, 你先计算出4的多少倍会刚好可以容入 <code>9</code> 中. </p>
<p>2倍, 非常好, 那余数是1 (用&#39;*&#39;标出)</p>
<table>
<tr>
<td>1 </td>
<td>2 </td>
<td>3 </td>
<td>4 </td>
<td>5 </td>
<td>6 </td>
<td>7 </td>
<td>8 </td>
<td>9 </td>
</tr>
<tr>
<td colspan="4">4</td>
<td colspan="4">4</td>
<td>1*</td>
</tr>
</table>
<p>在Swift中这么来表达</p>
<pre><code class="lang-swift">9 % 4 // 等于 1
</code></pre>
<p>为了得到 <code>a % b</code> 的结果, <code>%</code>计算了以下等式, 并输出<code>余数</code>作为结果:</p>
<pre><code>a = (b × 倍数) + 余数
</code></pre><p><code>倍数</code>取最大值的时候, 就会刚好可以容入 <code>a</code> 中.</p>
<p><code>9</code><code>4</code> 代入等式中, 我们得 <code>1</code>:</p>
<pre><code class="lang-swift">9 = (4 × 2) + 1
</code></pre>
<p>同样的方法, 我来们计算 <code>-9 % 4</code> :</p>
<pre><code>-9 % 4 // 等于 -1
</code></pre><p><code>-9</code><code>4</code> 代入等式, <code>-2</code> 是取到的最大整数:</p>
<pre><code class="lang-swift">-9 = (4 × -2) + -1
</code></pre>
<p>余数是 <code>-1</code>.</p>
<p>在对负数 <code>-b</code> 求余时, <code>-b</code>的符号会被忽略. 这意味着 <code>a % b</code><code>a % -b</code>的结果是相同的.</p>
<h2 id="-">浮点数求余计算</h2>
<p>不同于C和Objective-C, Swift中是可以对浮点数进行求余的.</p>
<pre><code class="lang-swift">8 % 2.5 // 等于 0.5
</code></pre>
<p>这个例子中, 8除于2.5等于3余0.5, 所以结果是0.5.</p>
<h1 id="-">自增和自增运算</h1>
<p>和C一样, Swift也提供了方便对变量本身加1或减1的自增 <code>++</code> 和自减 <code>--</code> 的运算符. 其操作对象可以是整形和浮点型。
</p>
<pre><code>var i = 0
++i // 现在 i = 1
</code></pre><p>每调用一次 <code>++i</code>, <code>i</code> 的值就会加1.
实际上, <code>++i</code><code>i = i + 1</code> 的简写, 而 <code>--i</code><code>i = i - 1</code>的简写.</p>
<p><code>++</code><code>--</code>既是前置又是后置运算. <code>++i</code>, <code>i++</code>, <code>--i</code><code>i--</code> 都是有效的写法.</p>
<p>我们需要注意的是这些运算符修改了 <code>i</code> 后有一个返回值. 如果你只想修改 <code>i</code> 的值, 那你就可以忽略这个返回值. 但如果你想使用返回值, 你就需要留意前置和后置操作的返回值是不同的.</p>
<p><code>++</code> 前置的时候, 先自増再返回.</p>
<p><code>++</code> 后置的时候, 先返回再自增.</p>
<p>不懂? 我们看例子:</p>
<pre><code class="lang-swift">var a = 0
let b = ++a // a 和 b 现在都是 1
let c = a++ // a 现在 2, 但 c 是 a 自增前的值 1
</code></pre>
<p>上述例子, <code>let b = ++a</code>, 先把 <code>a</code> 加1了再返回 <code>a</code> 的值. 所以 <code>a</code><code>b</code> 都是新值 <code>1</code>.</p>
<p><code>let c = a++</code>, 是先返回了 <code>a</code> 的值, 然后 <code>a</code> 才加1. 所以 <code>c</code> 得到了 <code>a</code> 的旧值1, 而 <code>a</code> 加1后变成2.</p>
<p>除非你需要使用 <code>i++</code> 的特性, 不然推荐你使用 <code>++i</code><code>--i</code>, 因为先修改后返回这样的行为更符合我们的逻辑.</p>
<h1 id="-">单目负号</h1>
<p>数值的正负号可以使用前缀 <code>-</code> (即单目负号) 来切换:</p>
<pre><code class="lang-swift">let three = 3
let minusThree = -three // minusThree 等于 -3
let plusThree = -minusThree // plusThree 等于 3, o或 &quot;负负3&quot;
</code></pre>
<p>单目负号写在操作数之前, 中间没有空格.</p>
<h1 id="-">单目正号</h1>
<p>单目正号 <code>+</code> 不做任何改变地返回操作数的值.</p>
<pre><code class="lang-swift">let minusSix = -6
let alsoMinusSix = +minusSix // alsoMinusSix 等于 -6
</code></pre>
<p>虽然单目 <code>+</code> 做无用功, 但当你在使用单目负号来表达负数时, 你可以使用单目正号来表达正数, 如此你的代码会具有对称美.</p>
<h1 id="-">复合赋值</h1>
<p>如同强大的C语言, Swift也提供把其他运算符和赋值运算 <code>=</code> 组合的复合赋值运算符, 加赋运算 <code>+=</code> 是其中一个例子:</p>
<pre><code class="lang-swift">var a = 1
a += 2 // a 现在是 3
</code></pre>
<p>表达式 <code>a += 2</code><code>a = a + 2</code> 的简写, 一个加赋运算就把加法和赋值两件事完成了.</p>
<blockquote>
<p>注意:</p>
<p>复合赋值运算没有返回值, <code>let b = a += 2</code> 这类代码是错误. 这不同于上面提到的自增和自减运算符.</p>
</blockquote>
<p><a href="http://#" target="_blank">表达式</a>里有复合运算符的完整列表.
</p>
<h1 id="-">比较运算</h1>
<p>所有标准C中的比较运算都可以在Swift中使用.</p>
<ul>
<li>等于 <code>a == b</code></li>
<li>不等于 <code>a != b</code></li>
<li>大于 <code>a &gt; b</code></li>
<li>小于 <code>a &lt; b</code></li>
<li>大于等于 <code>a &gt;= b</code></li>
<li>小于等于 <code>a &lt;= b</code></li>
</ul>
<blockquote>
<p>注意:</p>
<p>Swift也提供恒等 <code>===</code> 和不恒等 <code>!==</code> 这两个比较符来判断两个对象是否引用同一个对象实例. 更多细节在 <a href="Classes and Structures">类与结构</a>.</p>
</blockquote>
<p>每个比较运算都返回了一个标识表达式是否成立的布尔值:</p>
<pre><code class="lang-swift">1 == 1 // true, 因为 1 等于 1
2 != 1 // true, 因为 2 不等于 1
2 &gt; 1 // true, 因为 2 大于 1
1 &lt; 2 // true, 因为 1 小于2
1 &gt;= 1 // true, 因为 1 大于等于 1
2 &lt;= 1 // false, 因为 2 并不小于等于 1
</code></pre>
<p>比较运算多用于条件语句, 如 <code>if</code> 条件:</p>
<pre><code class="lang-swift">let name = &quot;world&quot;
if name == &quot;world&quot; {
println(&quot;hello, world&quot;)
} else {
println(&quot;对不起, \(name), 我不认识你!&quot;)
}
// 输出 &quot;hello, world&quot;, 因为 `name` 就是等于 &quot;world&quot;
</code></pre>
<p>关于 <code>if</code> 语句, 请看 <a href="Control Flow">控制流</a>.</p>
<h1 id="-">三目条件运算</h1>
<p>三目条件运算的特殊在于它是有三个操作数的运算符, 它的原型是 <code>问题 ? 答案1 : 答案2</code>. 它简洁地表达根据 <code>问题</code> 成立与否作出二选一的操作. 如果 <code>问题</code> 成立, 返回 <code>答案1</code> 的结果; 如果不成立, 返回 <code>答案2</code> 的结果.</p>
<p>使用三目条件运算简化了以下代码:</p>
<pre><code class="lang-swift">if question: {
answer1
}
else {
answer2
}
</code></pre>
<p>这里有个计算表格行高的例子. 如果有表头, 那行高应比内容高度要高出50像素; 如果没有表头, 只需高出20像素.</p>
<pre><code class="lang-swift">let contentHeight = 40
let hasHeader = true
let rowHeight = contentHeight + (hasHeader ? 50 : 20)
// rowHeight 现在是 90
</code></pre>
<p>这样写会比下面的代码简洁:</p>
<pre><code class="lang-swift">let contentHeight = 40
let hasHeader = true
var rowHeight = contentHeight
if hasHeader {
rowHeight = rowHeight + 50
} else {
rowHeight = rowHeight + 20
}
// rowHeight 现在是 90
</code></pre>
<p>第一段代码例子使用了三目条件运算, 所以一行代码就能让我们得到正确答案. 这比第二段代码简洁得多, 无需将 <code>rowHeight</code> 定义成变量, 因为它的值无需在 <code>if</code> 语句中改变.</p>
<p>三目条件运算提供有效率且便捷的方式来表达二选一的选择. 需要注意的事, 过度使用三目条件运算就会由简洁的代码变成难懂的代码. 我们应避免在一个组合语句使用多个三目条件运算符. </p>
<h1 id="-">区间运算符</h1>
<p>Swift提供了两个方便表达一个区间的值的运算符.</p>
<h2 id="-">闭区间运算符</h2>
<p>闭区间运算符 <code>a...b</code> 定义一个包含从 <code>a</code><code>b</code> (包括 <code>a</code><code>b</code>)的所有值的区间.
闭区间运算符在迭代一个区间的所有值时是非常有用的, 如在 <code>for-in</code> 循环中:</p>
<pre><code class="lang-swift">for index in 1...5 {
println(&quot;\(index) * 5 = \(index * 5)&quot;)
}
// 1 * 5 = 5
// 2 * 5 = 10
// 3 * 5 = 15
// 4 * 5 = 20
// 5 * 5 = 25
</code></pre>
<p>关于 <code>for-in</code>, 请看 <a href="Control Flow">控制流</a>. </p>
<h2 id="-">半闭区间</h2>
<p>半闭区间 <code>a..b</code> 定义一个从 <code>a</code><code>b</code> 但不包括 <code>b</code> 的区间.
之所以称为半闭区间, 是因为该区间包含第一个值而不包括最后的值.</p>
<p>半闭区间的实用性在于当你使用一个0始的列表(如数组)时, 非常方便地从0数到列表的长度.</p>
<pre><code class="lang-swift">let names = [&quot;Anna&quot;, &quot;Alex&quot;, &quot;Brian&quot;, &quot;Jack&quot;]
let count = names.count
for i in 0..count {
println(&quot;第 \(i + 1) 个人叫 \(names[i])&quot;)
}
// 第 1 个人叫 Anna
// 第 2 个人叫 Alex
// 第 3 个人叫 Brian
// 第 4 个人叫 Jack
</code></pre>
<blockquote>
<p>注意: 数组有4个元素, 但 <code>0..count</code> 只数到 3 (最后一个元素的下标), 因为它是半闭区间. 关于数组, 请查阅 <a href="Arrays">数组</a>.</p>
</blockquote>
<h1 id="-">逻辑运算</h1>
<p>逻辑运算的操作对象是逻辑布尔值. Swift支持基于C语言的三个标准逻辑运算.</p>
<ul>
<li>逻辑非 <code>!a</code></li>
<li>逻辑与 <code>a &amp;&amp; b</code></li>
<li>逻辑或 <code>a || b</code></li>
</ul>
<h2 id="-">逻辑非</h2>
<p>逻辑非运算 <code>!a</code> 对一个布尔值取反, 使得 <code>true</code><code>false</code>, <code>false</code><code>true</code>.</p>
<p>它是一个前置运算符, 需出现在操作数之前, 且不加空格. 读作 <code>非 a</code>, 然后我们看以下例子:</p>
<pre><code class="lang-swift">let allowedEntry = false
if !allowedEntry {
println(&quot;ACCESS DENIED&quot;)
}
// prints &quot;ACCESS DENIED&quot;
</code></pre>
<p><code>if !allowedEntry</code>语句可以读作 &quot;如果 非 alowed entry.&quot;, 接下一行代码只有在如果 &quot;非 allow entry&quot;<code>true</code>, 即 <code>allowEntry</code><code>false</code> 时被执行.</p>
<p>在示例代码中, 小心地选择布尔常量或变量有助于代码的可读性, 并且避免使用双重逻辑非运算, 或混乱的逻辑语句.</p>
<h2 id="-">逻辑与</h2>
<p>逻辑与 <code>a &amp;&amp; b</code> 表达了只有 <code>a</code><code>b</code> 的值都为 <code>true</code> 时, 整个表达式的值才会是 <code>true</code> .</p>
<p>只要任意一个值为 <code>false</code>, 整个表达式的值就为 <code>false</code>. 事实上, 如果第一个值为 <code>false</code>, 那么是不去计算第二个值的, 因为它已经不可能影响整个表达式的结果了. 这被称做 &quot;短路计算&quot;.</p>
<p>以下例子, 只有两个值都为值的时候才允许进入:</p>
<pre><code class="lang-swift">let enteredDoorCode = true
let passedRetinaScan = false
if enteredDoorCode &amp;&amp; passedRetinaScan {
println(&quot;Welcome!&quot;)
} else {
println(&quot;ACCESS DENIED&quot;)
}
// 输出 &quot;ACCESS DENIED
</code></pre>
<h2 id="-">逻辑或</h2>
<p>逻辑或 <code>a || b</code> 是一个由两个连续的 <code>|</code> 组成的中置运算符. 它表示了两个逻辑表达式的其中一个为 <code>true</code>, 整个表达式就为 <code>true</code>.</p>
<p>同逻辑与运算类似, 逻辑或也是&quot;短路计算&quot;的, 当左端的表达式为 <code>true</code> 时, 将不计算右边的表达式了, 因为它不可能改变整个表达式的值了.</p>
<p>以下示例代码中, 第一个布尔值 <code>hasDoorKey</code><code>false</code>, 但第二个值 <code>knowsOverridePassword</code><code>true</code>, 所以整个表达是 <code>true</code>, 于是允许进入:</p>
<pre><code class="lang-swift">let hasDoorKey = false
let knowsOverridePassword = true
if hasDoorKey || knowsOverridePassword {
println(&quot;Welcome!&quot;)
} else {
println(&quot;ACCESS DENIED&quot;)
}
// 输出 &quot;Welcome!&quot;
</code></pre>
<h2 id="-">组合逻辑</h2>
<p>我们可以组合多个逻辑运算来表达一个复合逻辑:</p>
<pre><code class="lang-swift">if enteredDoorCode &amp;&amp; passedRetinaScan || hasDoorKey || knowsOverridePassword {
println(&quot;Welcome!&quot;)
} else {
println(&quot;ACCESS DENIED&quot;)
}
// 输出 &quot;Welcome!&quot;
</code></pre>
<p>这个例子使用了含多个 <code>&amp;&amp;</code><code>||</code> 的复合逻辑. 但无论怎样, <code>&amp;&amp;</code><code>||</code> 始终只能操作两个值. 所以这实际是三个简单逻辑连续操作的结果. 我们来解读一下:</p>
<p>如果我们输入了正确的密码并通过了视网膜扫描; 或者我们有一把有效的钥匙; 又或者我们知道紧急情况下重置的密码, 我们就能把门打开进入.</p>
<p>前两种情况, 我们都不满足, 所以前两个简单逻辑的结果是 <code>false</code>, 但是我们是知道紧急情况下重置的密码的, 所以整个复杂表达式的值还是 <code>true</code>.</p>
<h2 id="-">使用括号来明确优先级</h2>
<p>为了一个复杂表达式更容易读懂, 在合适的地方使用括号来明确优先级是很有效的, 虽然它并非必要的. 在上个关于门的权限的例子中, 我们给第一个部分加个括号, 使用它看起来逻辑更明确.</p>
<pre><code class="lang-swift">if (enteredDoorCode &amp;&amp; passedRetinaScan) || hasDoorKey || knowsOverridePassword {
println(&quot;Welcome!&quot;)
} else {
println(&quot;ACCESS DENIED&quot;)
}
// prints &quot;Welcome!&quot;
</code></pre>
<p>这括号使得前两个值被看成整个逻辑表达中独立的一个部分. 虽然有括号和没括号的输出结果是一样的, 但对于读代码的人来说有括号的代码更清晰.</p>
<p>可读性比简洁性更重要, 请在可以让你代码变清晰地地方加个括号吧!</p>
</section>
</div> </div>
</div> </div>
</div> </div>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.3" data-basepath=".." data-revision="1402067788809"> <div class="book" data-level="2.3" data-basepath=".." data-revision="1402128272564">
<div class="book-header"> <div class="book-header">
<!-- Actions Left --> <!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a> <a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -576,9 +576,23 @@
<div class="page-inner"> <div class="page-inner">
<section class="normal" id="section-gitbook_171"> <section class="normal" id="section-gitbook_50">
<h1 id="-strings-and-characters-">字符串和字符 (Strings and Characters)</h1> <h1 id="-strings-and-characters-">字符串和字符 (Strings and Characters)</h1>
<p>本页包含内容:</p>
<ul>
<li>字符串字面量</li>
<li>初始化空字符串</li>
<li>字符串可变性</li>
<li>字符串是值类型</li>
<li>使用字符</li>
<li>计算字符数量</li>
<li>连接字符串和字符</li>
<li>字符串插值</li>
<li>比较字符串</li>
<li>字符串大小写</li>
<li>Unicode</li>
</ul>
<p><strong>String</strong> 是一个有序的字符集合,例如 &quot;hello, world&quot;, &quot;albatross&quot; <p><strong>String</strong> 是一个有序的字符集合,例如 &quot;hello, world&quot;, &quot;albatross&quot;
Swift 字符串通过 <strong>String</strong> 类型来表示,也可以表示为 <strong>Character</strong> 类型值的集合。</p> Swift 字符串通过 <strong>String</strong> 类型来表示,也可以表示为 <strong>Character</strong> 类型值的集合。</p>
<p>Swift 的 <strong>String</strong><strong>Character</strong> 类型提供了一个快速的,兼容 Unicode 的方式来处理代码中的文本信息。 <p>Swift 的 <strong>String</strong><strong>Character</strong> 类型提供了一个快速的,兼容 Unicode 的方式来处理代码中的文本信息。
@ -828,7 +842,8 @@ print(&quot;\n&quot;)
// g // g
// ! // !
// 🐶 // 🐶
</code></pre> </code></pre><p></p>
</section> </section>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.4" data-basepath=".." data-revision="1402067788809"> <div class="book" data-level="2.4" data-basepath=".." data-revision="1402128272564">
<div class="book-header"> <div class="book-header">
<!-- Actions Left --> <!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a> <a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.5" data-basepath=".." data-revision="1402067788809"> <div class="book" data-level="2.5" data-basepath=".." data-revision="1402128272564">
<div class="book-header"> <div class="book-header">
<!-- Actions Left --> <!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a> <a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.6" data-basepath=".." data-revision="1402067788809"> <div class="book" data-level="2.6" data-basepath=".." data-revision="1402128272564">
<div class="book-header"> <div class="book-header">
<!-- Actions Left --> <!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a> <a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -576,9 +576,17 @@
<div class="page-inner"> <div class="page-inner">
<section class="normal" id="section-gitbook_174"> <section class="normal" id="section-gitbook_53">
<h1 id="-functions-">函数Functions</h1> <h1 id="-functions-">函数Functions</h1>
<p>本页包含内容:</p>
<ul>
<li>函数定义与调用</li>
<li>函数参数与返回值</li>
<li>函数参数名称</li>
<li>函数类型</li>
<li>函数嵌套</li>
</ul>
<p>函数是用来完成特定任务的独立的代码块。你给一个函数起一个合适的名字,用来标示函数做什么,并且当函数需要执行的时候,这个名字会被“调用”。</p> <p>函数是用来完成特定任务的独立的代码块。你给一个函数起一个合适的名字,用来标示函数做什么,并且当函数需要执行的时候,这个名字会被“调用”。</p>
<p>Swift统一的函数语法足够灵活可以用来表示任何函数包括从最简单的没有参数名字的C风格函数到复杂的带局部和外部参数名的Objective-C风格函数。参数可以提供默认值以简化函数调用。参数也可以即当做传入参数也当做传出参数也就是说一旦函数执行结束传入的参数值可以被修改。</p> <p>Swift统一的函数语法足够灵活可以用来表示任何函数包括从最简单的没有参数名字的C风格函数到复杂的带局部和外部参数名的Objective-C风格函数。参数可以提供默认值以简化函数调用。参数也可以即当做传入参数也当做传出参数也就是说一旦函数执行结束传入的参数值可以被修改。</p>
<p>在Swift中每个函数都有一种类型包括函数的参数值类型和返回值类型。你可以把函数类型当做任何其他普通变量类型一样处理这样就可以更简单地把函数当做别的函数的参数也可以从其他函数中返回函数。函数的定义可以写在在其他函数定义中这样可以在嵌套函数范围内实现功能封装。</p> <p>在Swift中每个函数都有一种类型包括函数的参数值类型和返回值类型。你可以把函数类型当做任何其他普通变量类型一样处理这样就可以更简单地把函数当做别的函数的参数也可以从其他函数中返回函数。函数的定义可以写在在其他函数定义中这样可以在嵌套函数范围内实现功能封装。</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.7" data-basepath=".." data-revision="1402067788809"> <div class="book" data-level="2.7" data-basepath=".." data-revision="1402128272564">
<div class="book-header"> <div class="book-header">
<!-- Actions Left --> <!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a> <a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -576,9 +576,16 @@
<div class="page-inner"> <div class="page-inner">
<section class="normal" id="section-gitbook_175"> <section class="normal" id="section-gitbook_54">
<h1 id="-">闭包</h1> <h1 id="-">闭包</h1>
<p>本页内容包含:</p>
<ul>
<li>闭包表达式</li>
<li>Trailing闭包</li>
<li>值捕获</li>
<li>闭包是引用类型</li>
</ul>
<p>闭包是功能性自包含模块,可以在代码中被传递和使用。 <p>闭包是功能性自包含模块,可以在代码中被传递和使用。
Swift 中的闭包与 C 和 Objective-C 中的 <code>blocks</code> 以及其他一些编程语言中的 <code>lambdas</code> 比较相似。</p> Swift 中的闭包与 C 和 Objective-C 中的 <code>blocks</code> 以及其他一些编程语言中的 <code>lambdas</code> 比较相似。</p>
<p>闭包可以 <strong>捕获</strong> 和存储其所在上下文中任意常量和变量的引用。 <p>闭包可以 <strong>捕获</strong> 和存储其所在上下文中任意常量和变量的引用。

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.8" data-basepath=".." data-revision="1402067788809"> <div class="book" data-level="2.8" data-basepath=".." data-revision="1402128272564">
<div class="book-header"> <div class="book-header">
<!-- Actions Left --> <!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a> <a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.9" data-basepath=".." data-revision="1402067788809"> <div class="book" data-level="2.9" data-basepath=".." data-revision="1402128272564">
<div class="book-header"> <div class="book-header">
<!-- Actions Left --> <!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a> <a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -576,9 +576,17 @@
<div class="page-inner"> <div class="page-inner">
<section class="normal" id="section-gitbook_177"> <section class="normal" id="section-gitbook_56">
<h3 id="-">类和结构体</h3> <h3 id="-">类和结构体</h3>
<p>本页包含内容:</p>
<ul>
<li>类和结构体对比</li>
<li>结构体和枚举是值类型</li>
<li>类是引用类型</li>
<li>类和结构体的选择</li>
<li>集合collection类型的赋值与复制行为</li>
</ul>
</section> </section>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.10" data-basepath=".." data-revision="1402067788809"> <div class="book" data-level="2.10" data-basepath=".." data-revision="1402128272564">
<div class="book-header"> <div class="book-header">
<!-- Actions Left --> <!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a> <a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.11" data-basepath=".." data-revision="1402067788809"> <div class="book" data-level="2.11" data-basepath=".." data-revision="1402128272564">
<div class="book-header"> <div class="book-header">
<!-- Actions Left --> <!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a> <a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.12" data-basepath=".." data-revision="1402067788809"> <div class="book" data-level="2.12" data-basepath=".." data-revision="1402128272564">
<div class="book-header"> <div class="book-header">
<!-- Actions Left --> <!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a> <a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.13" data-basepath=".." data-revision="1402067788809"> <div class="book" data-level="2.13" data-basepath=".." data-revision="1402128272564">
<div class="book-header"> <div class="book-header">
<!-- Actions Left --> <!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a> <a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.14" data-basepath=".." data-revision="1402067788809"> <div class="book" data-level="2.14" data-basepath=".." data-revision="1402128272564">
<div class="book-header"> <div class="book-header">
<!-- Actions Left --> <!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a> <a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.15" data-basepath=".." data-revision="1402067788809"> <div class="book" data-level="2.15" data-basepath=".." data-revision="1402128272564">
<div class="book-header"> <div class="book-header">
<!-- Actions Left --> <!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a> <a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.16" data-basepath=".." data-revision="1402067788809"> <div class="book" data-level="2.16" data-basepath=".." data-revision="1402128272564">
<div class="book-header"> <div class="book-header">
<!-- Actions Left --> <!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a> <a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -576,9 +576,18 @@
<div class="page-inner"> <div class="page-inner">
<section class="normal" id="section-gitbook_184"> <section class="normal" id="section-gitbook_63">
<h1 id="-">自动引用计数</h1> <h1 id="-">自动引用计数</h1>
<p>本页包含内容:</p>
<ul>
<li>自动引用计数的工作机制</li>
<li>自动引用计数实践</li>
<li>类实例间的强引用环</li>
<li>类实例间的强引用环分解</li>
<li>闭包的强引用环</li>
<li>闭包的强引用环分解</li>
</ul>
<p>Swift使用自动引用计数(ARC)这一机制来跟踪和管理你的应用程序的内存。通常情况下Swift的内存管理机制会一直起着作用你无须自己来考虑内存的管理。ARC会在类的实例不再被使用时自动释放其占用的内存。</p> <p>Swift使用自动引用计数(ARC)这一机制来跟踪和管理你的应用程序的内存。通常情况下Swift的内存管理机制会一直起着作用你无须自己来考虑内存的管理。ARC会在类的实例不再被使用时自动释放其占用的内存。</p>
<p>然而在少数情况下ARC为了能帮助你管理内存需要更多的关于你的代码之间关系的信息。本章描述了这些情况并且为你示范怎样启用ARC来管理你的应用程序的内存。</p> <p>然而在少数情况下ARC为了能帮助你管理内存需要更多的关于你的代码之间关系的信息。本章描述了这些情况并且为你示范怎样启用ARC来管理你的应用程序的内存。</p>
<blockquote> <blockquote>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.17" data-basepath=".." data-revision="1402067788809"> <div class="book" data-level="2.17" data-basepath=".." data-revision="1402128272564">
<div class="book-header"> <div class="book-header">
<!-- Actions Left --> <!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a> <a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.18" data-basepath=".." data-revision="1402067788809"> <div class="book" data-level="2.18" data-basepath=".." data-revision="1402128272564">
<div class="book-header"> <div class="book-header">
<!-- Actions Left --> <!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a> <a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.19" data-basepath=".." data-revision="1402067788809"> <div class="book" data-level="2.19" data-basepath=".." data-revision="1402128272564">
<div class="book-header"> <div class="book-header">
<!-- Actions Left --> <!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a> <a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -576,9 +576,14 @@
<div class="page-inner"> <div class="page-inner">
<section class="normal" id="section-gitbook_188"> <section class="normal" id="section-gitbook_66">
<h1 id="-">类型嵌套</h1> <h1 id="-">类型嵌套</h1>
<p>本页包含内容:</p>
<ul>
<li>类型嵌套实例</li>
<li>类型嵌套的引用</li>
</ul>
<p>枚举类型常被用于实现特定类或结构体的功能。也能够在有多种变量类型的环境中方便地定义通用类或结构体来使用为了实现这种功能Swift允许你定义类型嵌套可以在枚举类型、类和结构体中定义支持嵌套的类型。</p> <p>枚举类型常被用于实现特定类或结构体的功能。也能够在有多种变量类型的环境中方便地定义通用类或结构体来使用为了实现这种功能Swift允许你定义类型嵌套可以在枚举类型、类和结构体中定义支持嵌套的类型。</p>
<p>要在一个类型中嵌套另一个类型,将需要嵌套的类型的定义写在被嵌套类型的区域{}内,而且可以根据需要定义多级嵌套。</p> <p>要在一个类型中嵌套另一个类型,将需要嵌套的类型的定义写在被嵌套类型的区域{}内,而且可以根据需要定义多级嵌套。</p>
<h2 id="-">类型嵌套实例</h2> <h2 id="-">类型嵌套实例</h2>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.20" data-basepath=".." data-revision="1402067788809"> <div class="book" data-level="2.20" data-basepath=".." data-revision="1402128272564">
<div class="book-header"> <div class="book-header">
<!-- Actions Left --> <!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a> <a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.21" data-basepath=".." data-revision="1402067788809"> <div class="book" data-level="2.21" data-basepath=".." data-revision="1402128272564">
<div class="book-header"> <div class="book-header">
<!-- Actions Left --> <!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a> <a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.22" data-basepath=".." data-revision="1402067788809"> <div class="book" data-level="2.22" data-basepath=".." data-revision="1402128272564">
<div class="book-header"> <div class="book-header">
<!-- Actions Left --> <!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a> <a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -576,10 +576,21 @@
<div class="page-inner"> <div class="page-inner">
<section class="normal" id="section-gitbook_190"> <section class="normal" id="section-gitbook_69">
<h1 id="-">泛型</h1> <h1 id="-">泛型</h1>
<hr> <hr>
<p>本页包含内容:</p>
<ul>
<li>泛型所解决的问题</li>
<li>泛型函数</li>
<li>类型参数</li>
<li>命名类型参数</li>
<li>泛型类型</li>
<li>类型约束</li>
<li>关联类型</li>
<li>Where语句</li>
</ul>
<p><em>泛型代码</em>可以确保你写出灵活的,可重用的函数和定义出任何你所确定好的需求的类型。你的可以写出避免重复的代码,并且用一种清晰的,抽象的方式表达出来。</p> <p><em>泛型代码</em>可以确保你写出灵活的,可重用的函数和定义出任何你所确定好的需求的类型。你的可以写出避免重复的代码,并且用一种清晰的,抽象的方式表达出来。</p>
<p>泛型是Swift需要强大特征中的其中一个许多Swift标准库是通过泛型代码构建出来的。事实上你已经使用泛型贯穿着整个Language Guide即便你没有实现它。例如Swift的Array和Dictionary类型都是泛型集。你可以创建一个Int数组也可创建一个String数组或者甚至于可以是任何其他Swift的类型数据数组。同样的你也可以创建存储任何指定类型的字典(dictionary),而且这些类型可以是没有限制的。</p> <p>泛型是Swift需要强大特征中的其中一个许多Swift标准库是通过泛型代码构建出来的。事实上你已经使用泛型贯穿着整个Language Guide即便你没有实现它。例如Swift的Array和Dictionary类型都是泛型集。你可以创建一个Int数组也可创建一个String数组或者甚至于可以是任何其他Swift的类型数据数组。同样的你也可以创建存储任何指定类型的字典(dictionary),而且这些类型可以是没有限制的。</p>
<hr> <hr>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.23" data-basepath=".." data-revision="1402067788809"> <div class="book" data-level="2.23" data-basepath=".." data-revision="1402128272564">
<div class="book-header"> <div class="book-header">
<!-- Actions Left --> <!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a> <a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2" data-basepath=".." data-revision="1402067788809"> <div class="book" data-level="2" data-basepath=".." data-revision="1402128272564">
<div class="book-header"> <div class="book-header">
<!-- Actions Left --> <!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a> <a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -576,7 +576,7 @@
<div class="page-inner"> <div class="page-inner">
<section class="normal" id="section-gitbook_194"> <section class="normal" id="section-gitbook_73">
<h1 id="swift-">Swift 教程</h1> <h1 id="swift-">Swift 教程</h1>
<p>本章介绍了 Swift 的各种特性及其使用方法,是全书的核心部分。</p> <p>本章介绍了 Swift 的各种特性及其使用方法,是全书的核心部分。</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="3.1" data-basepath=".." data-revision="1402067788809"> <div class="book" data-level="3.1" data-basepath=".." data-revision="1402128272564">
<div class="book-header"> <div class="book-header">
<!-- Actions Left --> <!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a> <a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -576,7 +576,7 @@
<div class="page-inner"> <div class="page-inner">
<section class="normal" id="section-gitbook_195"> <section class="normal" id="section-gitbook_74">
<h1 id="-">关于语言附注</h1> <h1 id="-">关于语言附注</h1>
<p>本书的这一节描述了Swift编程语言的形式语法。这里描述的语法是为了帮助您更详细的了解该语言而不是让您直接实现一个解析器或编译器。</p> <p>本书的这一节描述了Swift编程语言的形式语法。这里描述的语法是为了帮助您更详细的了解该语言而不是让您直接实现一个解析器或编译器。</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="3.2" data-basepath=".." data-revision="1402067788809"> <div class="book" data-level="3.2" data-basepath=".." data-revision="1402128272564">
<div class="book-header"> <div class="book-header">
<!-- Actions Left --> <!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a> <a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="3.3" data-basepath=".." data-revision="1402067788809"> <div class="book" data-level="3.3" data-basepath=".." data-revision="1402128272564">
<div class="book-header"> <div class="book-header">
<!-- Actions Left --> <!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a> <a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="3.4" data-basepath=".." data-revision="1402067788809"> <div class="book" data-level="3.4" data-basepath=".." data-revision="1402128272564">
<div class="book-header"> <div class="book-header">
<!-- Actions Left --> <!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a> <a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="3.5" data-basepath=".." data-revision="1402067788809"> <div class="book" data-level="3.5" data-basepath=".." data-revision="1402128272564">
<div class="book-header"> <div class="book-header">
<!-- Actions Left --> <!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a> <a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="3.6" data-basepath=".." data-revision="1402067788809"> <div class="book" data-level="3.6" data-basepath=".." data-revision="1402128272564">
<div class="book-header"> <div class="book-header">
<!-- Actions Left --> <!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a> <a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="3.7" data-basepath=".." data-revision="1402067788809"> <div class="book" data-level="3.7" data-basepath=".." data-revision="1402128272564">
<div class="book-header"> <div class="book-header">
<!-- Actions Left --> <!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a> <a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="3.8" data-basepath=".." data-revision="1402067788809"> <div class="book" data-level="3.8" data-basepath=".." data-revision="1402128272564">
<div class="book-header"> <div class="book-header">
<!-- Actions Left --> <!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a> <a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>

View File

@ -44,7 +44,7 @@
<div class="book" data-level="3.9" data-basepath=".." data-revision="1402067788809"> <div class="book" data-level="3.9" data-basepath=".." data-revision="1402128272564">
<div class="book-header"> <div class="book-header">
<!-- Actions Left --> <!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a> <a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="3" data-basepath=".." data-revision="1402067788809"> <div class="book" data-level="3" data-basepath=".." data-revision="1402128272564">
<div class="book-header"> <div class="book-header">
<!-- Actions Left --> <!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a> <a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>

View File

@ -44,7 +44,7 @@
<div class="book" data-level="0" data-basepath="." data-revision="1402067788809"> <div class="book" data-level="0" data-basepath="." data-revision="1402128272564">
<div class="book-header"> <div class="book-header">
<!-- Actions Left --> <!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a> <a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -574,7 +574,7 @@
<div class="page-inner"> <div class="page-inner">
<section class="normal" id="section-gitbook_165"> <section class="normal" id="section-gitbook_44">
<h1 id="swift-">Swift 编程语言</h1> <h1 id="swift-">Swift 编程语言</h1>
<p>Swift 是苹果在 WWDC 2014 上发布的一款全新的编程语言,本书译自苹果官方的 Swift 教程《The Swift Programming Language》。</p> <p>Swift 是苹果在 WWDC 2014 上发布的一款全新的编程语言,本书译自苹果官方的 Swift 教程《The Swift Programming Language》。</p>
@ -625,4 +625,3 @@ require(["gitbook"], function(gitbook) {
</body> </body>
</html> </html>

View File

@ -1,5 +1,5 @@
CACHE MANIFEST CACHE MANIFEST
# Revision 1402067788810 # Revision 1402128272564
CACHE: CACHE:
index.html index.html
@ -24,8 +24,8 @@ chapter2/15_Deinitialization.html
chapter2/16_Automatic_Reference_Counting.html chapter2/16_Automatic_Reference_Counting.html
chapter2/17_Optional_Chaining.html chapter2/17_Optional_Chaining.html
chapter2/18_Type_Casting.html chapter2/18_Type_Casting.html
chapter2/20_Extensions.html
chapter2/19_Nested_Types.html chapter2/19_Nested_Types.html
chapter2/20_Extensions.html
chapter2/21_Protocols.html chapter2/21_Protocols.html
chapter2/22_Generics.html chapter2/22_Generics.html
chapter2/23_Advanced_Operators.html chapter2/23_Advanced_Operators.html

File diff suppressed because one or more lines are too long