Swift -Chapter 1

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是一个字符串,类型是StringString 不是 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. 因此、于是、今后、从今以后

你可能感兴趣的:(Swift -Chapter 1)