yaofly2012 / note

Personal blog

Home Page:https://github.com/yaofly2012/note/issues

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Swift

yaofly2012 opened this issue · comments

commented

变量
常量
关键字

类型:

  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
commented

变量&类型

强类型。

变量声明

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

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

fruits = [] // 虽然新值无法确定类型,但是fruits类型是确定的了
  1. 如果没有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变量(即常量)在声明的时候必须赋值,并且只能赋值一次。但是在编译阶段不一定明确变量的值,比如赋值个其他变量。

var a = 1;
let b = a;

类型转换

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

字符串

双引号

引入变量\()

多行字符串

  1. 尾部"""必须独占一行;
  2. 尾部"""的缩进不能多余每行的缩进

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

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

控制语句

条件语句

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

循环语句

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

函数&闭包

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

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

返回多个值(元组)

闭包

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

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

commented

对象 & 类

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

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