swift 常用库函数
//countElements 入参为<T : _CollectionType>(x: T) 返回值T.Index.Distance 本demo返回11
println(countElements("hello swift"))//11
//0:A 1:B 2:C 返回一个新的序列,其中每个元素是一个元组,第一个值为原来元素所在的位置`index`,第二个为原来序列中的元素
for (i,j) in enumerate(["A","B","C"])
{
println("\(i):\(j)")
}
//返回数字的绝对值
println(abs(-100))//100
println(abs(565))//565
// contains(sequence, element):如果某个序列sequence(比如说一个数组)包含指定的元素element ,则返回true,否则返回false
println(contains(["Swift","Objective-C"], "Swift"))//true
println(contains(["Swift","Objective-C"], "Jave"))//false
//dropFirst(sequence):返回一个去掉了首个元素的、新的序列(比如一个新数组)。
println(dropFirst(["Swift","Objective-C","Java","C#"]))//[Objective-C, Java, C#]
//dropLast(sequence):返回一个去掉了最后一个元素的、新的序列(比如一个新数组)
println(dropLast(["Swift","Objective-C","Java","C#"]))//[Swift, Objective-C, Java]
//dump(object):打印出某个对象object的所有信息 包括元素个数,
// 4 elements
// - [0]: Swift
// - [1]: Objective-C
// - [2]: Java
// - [3]: C#
// [Swift, Objective-C, Java, C#]
println(dump((["Swift","Objective-C","Java","C#"])))
//equal(sequence1, sequence2):判断两个序列是否相等
println(equal(["Swift","Objective-C","Java","C#"], ["Swift","Objective-C","Java","C#"]))//true
println(equal(["Swift","Objective-C","Java","C#"], ["Swift","Objective-C","Java","C#","Javascript"]))//false
//filter(sequence, includeElementClosure):对序列sequence中每个元素都执行includeElementClosure闭包,并将所有闭包结果为true的元素合成一个新序列sequence并返回
for i in filter(1...100, {$0%10 == 1}){
println(i)//1,11,21,31,41,51,61,71,81,91
}
println(filter(1...100, {$0%10 == 1}))//[1, 11, 21, 31, 41, 51, 61, 71, 81, 91] 区别于map函数
//find(sequence, element):返回序列sequence中某元素element的位置index。如果序列中不存在此元素,则返回nil
println(find(["Swift","Objective-C","Java","C#","Javascript"], "Java"))//Optional(2)
println(find(["Swift","Objective-C","Java","C#","Javascript"], "C++"))//nil
//indices(sequence):返回序列sequence中所有元素的位置(indices是index的复数)
println(indices(["Swift","Objective-C","Java","C#","Javascript"]))//0..<5
//join(separator, sequence):将序列sequence通过分隔符separator连成一个字符串,并返回此字符串
var lang = join(":", ["Swift","Objective-C","Java","C#","Javascript"])
println(lang)//Swift:Objective-C:Java:C#:Javascript
//map(sequence, transformClosure):对序列sequence中每个元素都执行includeElementClosure闭包,并将所有闭包的结果合成一个新序列sequence并返回 区别于filter返回的是把有为true结果的元素序列
println(map(1...10, {$0%3 == 1}))//[true, false, false, true, false, false, true, false, false, true]
//maxElement(sequence):返回序列sequence中的最大值。
println(maxElement(1...100))//100
println(maxElement(["Swift","Objective-C","Java","C#","Javascript"]))//Swift 这里有个疑问 为什么数组放的是数字的时候会报错
//minElements(sequence):返回序列sequence中的最小值
println(minElement(["Swift","Objective-C","Java","C#","Javascript"]))//C#
//reduce(sequence, initial, combineClosure):给定一个序列sequence,以及一个初始值initial,然后将initial和序列里的第1个元素作为参数传入combineClosure中进行运算,得到的结果保存到initial;然后再将initial和第2个元素传入combineClosure中计算,结果保存到initial;重复计算直到所有sequence中的元素都计算完毕,并返回最终的initial值
println(reduce(["Swift","Objective-C","Java","C#","Javascript"], "/", {$0 + $1}))// /SwiftObjective-CJavaC#Javascript
println(reduce([10,20,5,3], 1, {$0 + $1}))//39
//reverse(sequence):返回逆序的序列sequence
println(reverse(["Swift","Objective-C","Java","C#","Javascript"]))//[Javascript, C#, Java, Objective-C, Swift]
//startsWith(sequence1, sequence2):如果序列sequence1中开头的元素跟序列sequence2中的所有元素都相等,则返回true,否则返回false 也就是序列二中的元素是序列一中元素开头起的子集
println(startsWith("helloswift", "hello"))//true
println(startsWith("helloswift", "hellp"))//false
println(startsWith(["Swift","Objective-C","Java","C#","Javascript"],["Swift","Objective-C","Java"]))//true
println(startsWith(["Swift","Objective-C","Java","C#","Javascript"],["Swift","Objective-C","Java","C++"]))//false
//交换两个值 两个入参匀为inout类型 固交换后,两值发生变化
var oneInt = 3
var anotherInt = 903
swap(&oneInt,&anotherInt)
println("oneInt:\(oneInt),anotherInt:\(anotherInt)")//oneInt:903,anotherInt:3