yaofly2012 / note

Personal blog
https://github.com/yaofly2012/note/issues
44 stars 5 forks source link

Swift #268

Open yaofly2012 opened 1 year ago

yaofly2012 commented 1 year ago

变量 常量 关键字

类型:

  1. 基本类型
  2. 函数( Function, method)
  3. 结构(structure)
  4. 类(class)

控制语句 操作符

模块

包管理器

编程思想

Code written at global scope is used as the entry point for the program

参考

  1. Swift 官网
  2. cocoacasts fundamentals
yaofly2012 commented 1 year ago

变量&类型

强类型。

变量声明

let/var name[: type] [= initialValue]

  1. 如果编译器通过initialValue可以推断出变量类型,则可以省略:type;
  2. 变量的类型一旦确定就无法变更,即使指定的值没有明确类型;
    
    var fruits = ["strawberries", "limes", "tangerines"]; // fruits类型是 [String]

fruits = [] // 虽然新值无法确定类型,但是fruits类型是确定的了

3. 如果没有`initialValue`,则默认值是变量类型的默认值(如Int类型默认0)

>The value of a constant doesn’t need to be known at compile time, but you must assign it a value exactly once

`let`变量(即常量)在声明的时候必须赋值,并且只能赋值一次。但是在编译阶段不一定明确变量的值,比如赋值个其他变量。
```swift
var a = 1;
let b = a;

类型转换

不存在隐式类型转换,如果要进行类型转换则必须显示的指定。

字符串

双引号

引入变量\()

多行字符串

  1. 尾部"""必须独占一行;

  2. 尾部"""的缩进不能多余每行的缩进

    insufficient indentation of next 2 lines in multi-line string literal

  3. 每一行的缩进如果多与尾部"""的缩进,则一致的缩进会被删掉。

yaofly2012 commented 1 year ago

控制语句

条件语句

  1. if语句和可选值结合使用
  2. switch
    • case后面可以跟人意类型的数据
    • 必须含有default

循环语句

  1. while
  2. repeat-while类似JS里的do-while
yaofly2012 commented 1 year ago

函数&闭包

同JS一样,函数也是Swift的一等公民(first-class type),函数可以作为变量的值,函数的实参、返回值。

参数标签? 形参名字作为参数标签(label)有何特殊意义?

返回多个值(元组)

闭包

如何理解函数本质是闭包的特例

闭包是个内嵌的函数,内嵌在函数里,也可以是内嵌{}里(匿名闭包)。

yaofly2012 commented 1 year ago

对象 & 类

在创建类实例的时候,每个属性都必须赋值(赋值的方式可以是声明的时候赋值,或者在构造器里赋值),否则编译报错

error: return from initializer without initializing all stored properties

语法

self

构造器

析构函数

继承

对象

Swift没有字面量变量?对象就是类的实例,即只能通过类创建对象。

访问可选变量的属性

如果可选变量是个对象,如何访问可选变量的属性呢?利用?.

let optionalSquare: Square? = Square(sideLength: 2.5, name: "optional square")
let sideLength = optionalSquare?.sideLength