1. 定义变量时,尽量在后面加感叹号而不是问号,这样在使用时就无需加感叹号
-
var strOptional: String!
strOptional = "123456df"
if strOptional != nil{
print("非nil打印" + strOptional)
}else{
print("strOptional = nil")
2. 数组的使用如下
-
/*数组*/
let array = [Int](repeating:0, count:5)
var marray : [String]
marray = [String]()
marray += ["1"]
marray += ["2"]
for (index,item) in marray.enumerated() {
print("index=\(index),item=\(item)")
}
3. 字典
-
/*字典*/
let dict : [Int:String] = [10:"first",20:"second",30:"third"]
var string = dict[10]
/*函数*/
//元组返回值
func minMax(array: [Int]) -> (min:Int, max: Int)?{
if array.isEmpty {
return nil
}
var currentMin = array[0]
var currentMax = currentMin
for value in array[1..<array.count]{
if value < currentMin {
currentMin = value
} else if value > currentMax {
currentMax = value
}
}
return(currentMin, currentMax)
}
if let bounds =minMax(array: [35,32, -64,-2, 0,87, 12]) {
print("min =\(bounds.0), max =\(bounds.max)")
}
//可变参数
func vari<N> (members: N...) {
...
}
vari(members: 6,3,22)
一般默认函数中参数都是常数变量,不能改变他的值,如果要声明一个变量参数,可以再参数定义前加inout
4. 闭包
-
/*闭包
* Closures 是自包含的功能代码块,可以在代码中使用或者用来作为参数传值
*/
let divide = { (val1: Int, val2: Int) -> Int in
return val1 / val2
}
let result = divide(432,23)
print(result)
let names = ["sd", "SD", "D", "gw", "4r","s"]
// 使用普通函数(或内嵌函数)提供排序功能,闭包函数类型需为(String, String) -> Bool。
func backwards(s1: String, s2: String) -> Bool {
return s1 < s2
}
var reversed1 = names.sorted(by: backwards)
var reversed2 = names.sorted(by: <)
var reversed3 = names.sorted(by: { $0 < $1})
print(reversed3)
}