最近学习Swift语言,此为此课程的第二节,希望自己能在这条道路上坚持住,不断自我迭代发展。
Functions and Closures
使用func
来定义函数,并在括号内声明参数名和参数类型,使用->
来表示函数返回值的类型。
1 | func greet(person: String, day: String) -> String { |
swift中函数默认使用参数名作为标签,可以使用_
,或在参数名前自定义一个标签(如下的on)来代替默认标签的使用。
1 | func greet(_ person: String, on day: String) -> String { |
使用tuple来使得函数返回一个复合的值。
1 | func calculateStatistics(scores: [Int]) -> (min: Int, max: Int, sum: Int) { |
函数的嵌套,可以在一个函数中定义另一个函数,并在这个函数中使用。
1 | func returnFifteen() -> Int { |
函数作为第一类型,一个函数可以用另一个函数作为其返回值:
1 | func makeIncrementer() -> ((Int) -> Int) { |
函数也可以作为另一个函数的参数:
1 | func hasAnyMatches(list: [Int], condition: (Int) -> Bool) -> Bool { |
闭包的使用,用{}围成的一个代码块。使用in
来分离参数和代码及返回值。
1 | numbers.map({ (number: Int) -> Int in |
闭包更简洁的写法,当闭包的类型已知时,省略参数类型,和返回值类型
1 | let mappedNumbers = numbers.map({ number in 3 * number }) |
可以使用数字代替参数名来调用,这在短的闭包中非常有用,当闭包是函数的唯一参数,可以省略()
1 | let sortedNumbers = numbers.sorted { $0 > $1 } |
Objects and Classes
使用class
来定义一个类,并用相同的方法来在类中定义变量,常量,函数。
1 | class Shape { |
使用init
函数,在创造一个实例的时候来初始化这个实例。
1 | class NamedShape { |
使用override
关键字来声明子类覆盖超类,super
关键字来使用超类的方法。
1 | class Square: NamedShape { |
类中的变量也有get
和set
函数,分别不同作用:
1 | class EquilateralTriangle: NamedShape { |
使用willset
来使得两个变量的值保持一致。
1 | class TriangleAndSquare { |
Enumerations and Structures
use enum
to create an enumeration.like class and other name type.enumeration has its function and method.
1 | num Rank: Int { |
use struct
to create structure.one of the most inportant differencies between classes and structure is that structure are always bo copied when they are psaaing around your code,but structure pass by the reference.
1 | struct Card { |