ground of being
-
语句(
statement
):一句完整的swift命令是指令。- 一般一行一句,
print("the architecture of swift")
- 可以多条语句放在一行,但是需要添加";"进行分隔。
print("study");print("the architecture of swift")
- 也可以一条语句放在多行,不过一定要在合适的位置(比如在括号后面)换行,否则会无法被识别
print( "the architecture of swift")
-
注释(
comments
) :单行注释:// 注释的内容
或 多行注释:/* 注释的内容 */
-
格式:{} 作为边界,内容缩进,
swift
并不在乎我们的格式是什么样的;
Everything is an Object?
-
一切皆对象,是所有面向对象编程语言的统一的话术。
-
对象,我们可以向对象发送消息;消息:是指命令式的指令。比如让狗 bark、sit,这些指令就是消息,狗就是接收消息的对象。
-
swift
中发送消息的语法是.
符号,(如果需要换行的话,可以在.
符合前) -
一切皆对象,在
swift
中,数字1
也可以接收消息,let s = 1.description
-
swift
中,每个名词都是对象,每个动词都是消息。判断是否是对象的终极标准是我们是否可以修改它。 -
对象类型可以添加扩展,也就意味着,我们可以给这个类型添加自定义的消息,比如,正常来说一个数字没有
say hello
的能力,但我们可以添加扩展,让它有这个能力extension Int { func sayHello() { print("Hello, I'm \(self)") } } 1.sayHello() // outputs: "Hello, I'm 1"
三种对象类型
- 惊讶于
1
竟然是一个对象,但通过对OC
的学习,我们知道1
不是一个class
, 也不是某个class
对应的实例;实际上,1
的类型是Int
,是一个结构体(struct
),除此之外,还有一个枚举类型可以接收消息。 - 总的说三种对象类型包括
class
(类) 、struct
(结构体)、enum
(枚举)
Variables
-
变量是指对象的名字,更准确的说,一个变量指向一个对象,是一个对象的引用。也可以非技术性的认为它是一个放置对象的盒子。对象可能会被更改,或被另一个对象替换,
-
在
swift
中,一个变量不会隐性的被创建,所有的变量都必须被声明,声明变量可以使用两个关键词,let
var
,swift
中的声明一般与初始化共同出现,直接使用=
给变量赋值,=
在swift
中不再是数学公式,而是赋值指令,代表取到等号右边的值,用它替换等号左边的值。 -
let
声明的变量初始值无法被替换,它是一个常量constant
;如果确定之后不会更改这个变量的值,建议使用let
进行声明,它不需要编译,这也会使swift
更高效 -
变量是有类型的,当变量被声明的时候,变量的类型就确认了,而且类型不可改变。下面的用法是不对的。
var two = 2 two = "hello" // compile error
-
two
被声明后值是一个数字,类型是Int
,我们可能改它的值,设为1
,但不能设为Hello
, 因为Hello
是一个字符串,类型是String
,String
不是Int
-
Functions
-
可执行的语句(
excutable code
)不能随便放,需要放在方法的body
里面。func go() { let one = 1 var two = 2 two = one }
- 这是一组有序的代码,被封装在一个函数中,这个函数有声明,但没有执行,需要有人调用这个函数,里面的语句才能被执行。
func doGo() { go() }
- 这是一个函数的调用,但可以发现,doGo这个函数也只有声明,没有调用,如果希望我们自己写的代码可以被执行到,就需要了解我们的终极目标是写一个iOS的应用,将会运行在iOS的机器上,运行时将会调用指定的方法。所以我们要把特殊的函数写在运行时会调用的地方。
The Structure of a Swift File
- 一个swift工程包含一个或多个文件,哪些代码可以出现在文件中有明确(definite)的规定。只有几个固定的代码可以出现的文件的顶层,主要包括以下几个:
- 模块引入 (
Module import statement
) - 变量声明 (
Variable declarations
),在最顶层声明的是全局变量 - 函数声明 (
Function declarations
) - 对象类型声明 (
Object type declarations
)
- 模块引入 (
Scope and Lifetime
-
swift
中的所有东西都有一个生效范围,这样决定了它是否可以被其他的代码引用。 - 当一个变量或方法被声明之后,它只能在它声明的那个层级被访问到,它可以访问与它同级或在它上级的属性或方法声明。
- 声明的位置决定其生命周期的长短。
Object Members
property
method
Namespaces
class ViewController {
class Manager {
func doSomething() {
print("do something");
}
}
}
-
对
Manager
而言,ViewController
就是它的命名空间,在命名空间内可以直接访问Manager
类,在命名空间外则必须先调用ViewController
才能访问到Manager
,ViewController.Manager().doSomething()
Modules
- 层级最高的命名空间就是模块。我们的APP是一个模块,因此也是一个命名空间,这个命名空间的名字就是我们APP的名字。假设我们的APP名字是
SwiftStudy
,里面声明一个ViewController
的类,我们可以通过SwiftStudy.ViewController
来访问它,但因为我们已经在SwiftStudy
这个命名空间下了,所以,我们可以直接访问ViewController
。 - 当我们
import
一个module
的时候,这个module
里面的层级最高的声明我们都可以直接使用。比如我们import Foundation
, 就可以直接使用NSString
这个类。当然,如果我们傻傻的声明了一个我们自己的NSString
的类的话就需要使用Foundation.NSString
来访问Foundation
这个module
里面的NSSting
类型了,否则Swift
将无法区分你要调用的到底是哪个Module
里的NSSting
。 -
Swift
本身也是被声明在一个module
里的,叫做Swift module
。但是我们不需要主动import
它,因为我们的代码已经隐性的import
过这个module
,当然 我们也可以显性的import Swift
,但是没必要。 - 这个隐性的
import
可以解释一个较为神奇的现象:print
函数是哪里来的?为什么我们可以使用这个不属于任何对象的方法?实际上print
是一个被声明在Swift Module
最高层级的函数,而我们的代码又可以使用Swift module
声明在最高层级的方法和变量,所以我们可以直接使用print
函数 - 我们可以看到
Swift Module
最高层级都声明了些什么,Control + Command + click print 函数
,就可以打开对应的文件,里面可以看到包括print
在内的方法声明
Instances
Eng
- scope 范围
- boast 夸 ; a boast common 自夸 自述
- stipulate 规定
- parentheses n. 括弧
- primitive adj. 原始的 n. 原始人、原函数
- linguistic adj. 语言学
- syntactic adj. 句法的
- trickery n. 诡计、权谋、骗局
- ultimate n. adj. 最终 终极 最后
- scalar n. adj. 标量
- Flavors n. 风味、风格
- object-oriented 面向对象
- notion n. 概念
- Technically adv. 技术性的
- undergo v. 经历、经受、遭受
- integrity n. 正直、完整、诚实
- implicitly adv. 蕴含的 不明显的 含蓄地
- existence n.存在
- declared adj. 声明的 宣告的
- declare v. 声明 宣告
- accompanied 伴随
- merely adv. 仅仅 只是
- assignment n. 赋值 分配 指派 任务
- algebraic adj. 代数的
- formula n. 公式、式、式子、方案、配方
- permit 允许、使
- literally adv. 从字面上看
- letter n. 信 字母
- capital n.资本、首都、大写 adj. 资本的 首都的
- violate v.违反、侵犯、触犯、违背
- Thus adv. 从而、因而、因此
- a batch of 一批
- delimited 定界的
- nutty adj 坚果的 疯狂的
- regression n. 还原 回归
- recurse v. 递归
- infinite adj. 无限的 无穷的 广大无边的
- definite adj. 定、确定的、确切的
- impetus n. 推动力、促进、势头、原动力
- demonstrate v. 演示
- constitute v.构成、组成
- legal adj. 合法的、法定的、法律的
- significance n. 意义、重要性
- In effect adv. 实际上
- hence adv. 因此、于是、今后、从今以后
网友评论