美文网首页
Swift -Chapter 1

Swift -Chapter 1

作者: 旷野独狼 | 来源:发表于2020-12-29 17:23 被阅读0次

    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

          本文链接:https://www.haomeiwen.com/subject/ygcqoktx.html