Swift
yaofly2012 opened this issue · comments
变量
常量
关键字
类型:
- 基本类型
- 函数( Function, method)
- 结构(structure)
- 类(class)
控制语句
操作符
模块
包管理器
- 库
- 可执行程序
编程**
Code written at global scope is used as the entry point for the program
参考
变量&类型
强类型。
变量声明
let/var name[: type] [= initialValue]
- 如果编译器通过
initialValue
可以推断出变量类型,则可以省略:type
; - 变量的类型一旦确定就无法变更,即使指定的值没有明确类型;
var fruits = ["strawberries", "limes", "tangerines"]; // fruits类型是 [String]
fruits = [] // 虽然新值无法确定类型,但是fruits类型是确定的了
- 如果没有
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;
类型转换
不存在隐式类型转换,如果要进行类型转换则必须显示的指定。
字符串
双引号
引入变量\()
多行字符串
- 尾部
"""
必须独占一行; - 尾部
"""
的缩进不能多余每行的缩进
insufficient indentation of next 2 lines in multi-line string literal
- 每一行的缩进如果多与尾部
"""
的缩进,则一致的缩进会被删掉。
控制语句
条件语句
if
语句和可选值结合使用switch
case
后面可以跟人意类型的数据- 必须含有
default
循环语句
while
repeat-while
类似JS里的do-while
函数&闭包
同JS一样,函数也是Swift的一等公民(first-class type),函数可以作为变量的值,函数的实参、返回值。
参数标签?
形参名字作为参数标签(label)有何特殊意义?
返回多个值(元组)
闭包
如何理解函数本质是闭包的特例
?
闭包是个内嵌的函数,内嵌在函数里,也可以是内嵌{}
里(匿名闭包)。
对象 & 类
类
在创建类实例的时候,每个属性都必须赋值(赋值的方式可以是声明的时候赋值,或者在构造器里赋值),否则编译报错
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