Swift学习笔记

  其内容出自  Apple 官方的教学工程文件,鉴于清晰易懂,故另整理此篇文章。在此篇文章中,将会记录 Swift 的用法,用于分享和记录。

命名和标识符

命名事物

  编程中的名称与现实世界中的事物命名一样,能够提供丰富的信息,帮助你跟踪每一项内容。在代码中命名某个值后,就可以在需要使用该值的所有地方使用该名称。这样更易于阅读和理解代码。

  在 Swift 中,可以通过定义 “常量” 来选择名称并将其与值相关联。本课程稍后的部分将对常量进行更加详细的讲解。目前,只要了解常量是 Swift 中命名值的基本方法就可以了。

  使用单词 let 后接名称来定义常量,使用等号 = 为常量赋值:

1
2
3
4
5
6
7
8
9
10
11
//定义狗的数量(这是代码注释)
let numberOfDogs = 6

//定义猫的数量
let numberOfCats = 5

//定义乌龟的数量
let numberOfTurtles = 2

//定义仓鼠的数量
let numberOfHamsters = 1

标识符

  在 Swift 中,名称的正式称谓是 “标识符”。“标识符” 这个术语最常用在错误消息中。程序员通常使用不太正式的“名称”这个词。

  常量的名称以小写字母开头。如以下示例所示,它们可以由连在一起的几个单词构成。这是因为 Swift 会将以空格分隔的每个独立的单词视为一个标识符。

  为了便于阅读由多个单词组成的标识符,第一个单词后面的每个单词首字母都应大写。这种名称书写方式称为 “驼峰式拼写法”,这是因为名称中间的大写字母看起来有点像骆驼的驼峰。 🐫

1
2
3
4
5
6
7
8
9
10
11
let numberOfDogs = 6 + 2

let numberOfCats = 5 - 1

let numberOfTurtles = 2 + 1

let numberOfHamsters = 1 + 1

let totalNumberOfAnimals = numberOfDogs + numberOfCats + numberOfTurtles + numberOfHamsters

let totalNumberOfMammals = numberOfDogs + numberOfCats + numberOfHamsters

在 Swift 中,名称中可以使用表情符号。这种命名方式当然并不值得提倡,不过这很有趣。以下是在名称中使用表情符号重新完成的宠物问题。

1
2
3
4
5
6
7
8
9
10
11
let 🐶 = 8
let 🐱 = 4
let 🐹 = 2
let 🐢 = 3
let 🐍 = 1
let 🐷 = 1
let 🐟 = 1

let totalNumberOfAnimals = 🐶 + 🐱 + 🐹 + 🐢 + 🐍 + 🐷 + 🐟

let totalNumberOfMammals = 🐶 + 🐱 + 🐹 + 🐷

当然这只是娱乐用法,实际情况中不建议使用,除非你想挨一顿毒打。

程序员的行业术语

  一名 app 开发者不仅仅要知道如何在 Xcode 中进行键入。程序员们需要互相合作,共同讨论如何解决问题并相互进行说明。因此,了解程序员所使用的术语至关重要。

  除了学习如何编写代码和创建 app 之外,还需要学习与其他开发者谈论代码时需要使用的术语。

  例如,“代码行” 的正式名称叫做 “语句”。

1
let numberOfDogs = 101 //这是语句

  在 Swift 中,定义常量称为 “声明” 常量。因此,上述语句称为 “声明”。“我声明名称 numberOfDogs 具有值 101!”。

  单词 let 是一种 “关键字”。在 Swift 中,关键字具有特殊意义,不能用作名称。let 关键字用于声明常量。慢慢地,会接触到更多 Swift 关键字。

  语句的 = 101 部分是为常量进行 “赋值”,其中等号 = 称为 “赋值运算符”。

字符串

  进入任何一个 app,你都可以看到文本。文本无处不在,包括消息 app、新闻阅读器、社交媒体 app 等等。甚至相机 app 也使用文本来标识按钮和控件。

  在包括 Swift 在内的大多数编程语言中,文本值称为 “字符串”。

为何将它们称为字符串?

  可以把它们想像成一串珠子。每个珠子看起来都不一样,但这些珠子都按特定的顺序排列在一起。通常,单独一个字母(比如“H”)没什么用处。单词由一串字母串组成。因此,程序员将文本称为 “字符串”。字符串可以是你能够想像的任何文本。

字符

  当然,文本可以包含字母以外的元素,比如标点符号、数字、符号,甚至空格。所有这些都称为 “字符”,字符串由字符组成。

字母是字符:

“ Aa Bb Cc Dd Ee “
标点符号:
“ ! ? . , ; : “
数字:
“ 1 2 3 4 5 6 7 8 9 0 “
符号:
“ # @ $ & © π * + - / “
甚至空格和 Tab 键等不可见字符也是字符。(你看不到它们,但它们确实存在。)

定义字符串

  在上一章节中,你声明了如下所示的数字常量:

1
let heightInCentimeters = 7817

  要声明字符串常量,需要按如下方式将文本放在引号之间:

1
2
3
let favoriteBook = "The Sun Also Rises"

let traditionalGreeting = "Hello, world!"

Unicode

  Unicode 是一种国际标准,能够以标准方式表示几乎所有语言中的所有字符。

  Swift 中的字符串完全符合 Unicode 规范,因此你可以创建包含不同语言文本的字符串。

1
2
3
4
5
6
7
8
9
let englishGreeting = "Hello, World!"

let chineseGreeting = "你好,世界!"

let spanishGreeting = "¡Hola Mundo!"

let russianGreeting = "Привет мир!"

let japaneseGreeting = "こんにちは世界!"

  借助不同语言的字符串,你可以开发世界各地用户都能使用的 app。

  当然,世界各地的程序员使用的语言不同。在 Swift 中,可以在名称中使用 Unicode:

1
2
3
4
5
// Constant name in Chinese that means 'English Greeting'
let 英语问候 = "Hello, World!"

// Constant name in French that means 'English Greeting'
let salutationAnglais = "Hello, World!"

  Unicode 中还定义了表情符号字符,因此可以在字符串中包含表情符号。
  (在 Mac 上,按 Command-Control-空格键可以调出表情符号选择器。)

1
let welcomingPhrase = "Welcome! 😀"

  你还可以在名称中使用表情符号。少量使用非常有趣,但很多程序员认为它很难输入、难以读取,与使用单词表示名称相比,其表现力较差。

1
let 🍓🍏🍒🍐🍋🍇 = "Fruit Salad"

组合字符串

  程序员常常需要将字符串组合在一起。

  例如,你可能在社交媒体 app 中看到一条这样的信息 Chris likes your post。

  在 Swift 中,你可以通过将字符串添加在一起的方法组合字符串:

1
2
3
4
5
6
7
8
// This might change over time
let username = "Chris"

// This part of the message will get reused
let likesYourPostMessage = "likes your post"

// Combine strings by using the plus sign
let finishedMessage = username + " " + likesYourPostMessage

字符插值

  在 Swift 中,你可以使用占位符来定义字符串,这些占位符将被具体的值替代。

  在 Swift 中不能将空格作为占位符。你可以使用 (name)。name 的值会替代占位符。

  实际使用方法如下。请注意 firstName 和 city 填入值后在结果边栏中的显示效果:

1
2
3
4
let firstName = "Tim"
let city = "Cupertino"

let welcomeString = "Hello \(firstName), welcome to \(city)"

神奇的转义功能

  你已经利用将字符放在引号之间的方法定义了很多字符串。但如果想创建一个包含引号的字符串,该怎么办呢?

  可以尝试直接将引号加入字符串中间。

  看看下面的 badString 代码行(当然,网页上并不能体现):

1
let badString = "He said, "Hi there!" as he passed by."

  Swift 在遇到第二个引号(就是“Hi”之前)时就认为字符串定义已经完成。它不知道如何解析代码行的其余部分。

  那么我们应该怎么做呢?

解决方案

  要在字符串中包含引号,应在引号前键入一个反斜杠:

1
let stringWithQuotationMarks = "He said, \"Hi there!\" as he passed by."

  这个反斜杠会告诉 Swift 将下一个字符作为特殊字符处理。因为引号字符跟在反斜杠后面,Swift 会以不同方式进行处理。它会将引号包含在字符串中,而不是用于结束字符串定义。

  反斜杠字符对字符串的正常行为进行“转义”,因此称为“转义字符”。

转义序列

  “转义字符”后面加上进行特殊处理的元素,这种模式称为“转义序列”。比如以下两种不同的转义序列:

1
2
3
4
5
6
// The backslash followed by a quotation mark is an escape sequence.
let favoriteQuotation = "Hamlet said, \"To be, or not to be?\""

// Another escape sequence is the placeholder in an interpolated string.
let flavor = "chocolate"
let iceCreamAnnouncement = "The flavor of the day is \(flavor)"

  Swift 中的某些转义序列允许插入不可见字符。经常用到的一种是“换行”字符。顾名思义,这个字符会让文本跳到新的一行。

  换行的转义序列是反斜杠字符后面加字母“n”:

1
let startOfAPoem = "Roses are red.\nViolets are blue."

——未完

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×