清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>
//
// main.swift
// Function
//
// Created by Ethan on 15/1/31.
// Copyright (c) 2015年 Ethan. All rights reserved.
//
import Foundation
//定义与使用
func isSell(commodity: String, haha: String="haha") -> Bool {
var selled:Bool = true
return selled
}
var acommName = "PS4"
if isSell(acommName) {
println("\(acommName) is selled")
}
//形参与返回值
func setFormEnable(bEnable: Bool) -> (Int,Bool) {
var formxPosition = 0
var isEnable = true
return (formxPosition, isEnable)
}
//外部形参 名字被给定之后必须显式调用
func outName(outName localName: Int) -> Bool {
return false
}
outName(outName: 1)
func outInNameSame(#localName: Int) -> Bool {
return false
}
outInNameSame(localName: 2)
//可变参数,只能放最后
func changeableParam(numbers: Double...) -> Double {
var count:Double = 0
for number in numbers {
count += number
}
return count
}
changeableParam(1.0, 2.02, 3.33)
//默认参数都是let常量的值类型
func constantParam(var str: String) {
//不加var会报错
str = "222";
}
var inoutInt = 0
func inoutParam(inout param: Int){
param = 1
}
//1
println(inoutParam(&inoutInt))
//函数赋值
var funcParam:(Int)->Int = inoutParam
let anotherFuncParam = funcParam
//嵌套函数
func outterFunc(name: String) -> String {
func inner(innerName:Int) -> String {
//捕获上下文常量或变量
return String(innerName*2) + name
}
return inner(1)
}
outterFunc("Ethan")
//闭包,闭包或函数都是引用类型
let names = ["zhangsan", "lisi", "wangwu", "zhaoliu"]
names.sorted({(s1: String, s2: String) -> Bool in
return s1 < s2
})
//简洁版
names.sorted({s1, s2 in s1<s2})
//更简洁版
names.sorted({$0<$1})
//最简洁版
names.sorted(<)
//trailing闭包
func trailingFunc(str: String, closureFunc: (String s1, String s2) -> String){
return str + closureFunc
}
trailingFunc("haha"){
return $0 + $1
}