//
// main.Swift
// Function
//
// Created by Danny Deng on 10/18/16.
// Copyright © 2016 QQ 352735640. All rights reserved.
//
import Foundation
/*********************/
// 1不带参数无返回值的函数
/*********************/
func withoutParams() {
print("Now call withoutParams")
}
withoutParams()
//控制台输出 Now call withoutParams
/*********************/
// 2带参数单返回值的函数
/*********************/
func withParams(param1 :Int,param2 : Int)->Int {
return param1 + param2
}
let num1 =20
let num2 =45
var result =withParams(param1: num1, param2: num2)
print("withParams the result is\(result)")
//控制台输出 withParams the result is 65
/*********************/
// 3多个返回值的函数
/*********************/
func multiReturn(param1:Int, param2: Int) -> (Int,Int,Int) {
return (param1 + param2,param1 - param2,param1 * param2)
}
let (a,b,c) =multiReturn(param1: 23, param2: 56)
print("a=\(a) b=\(b) c=\(c)")
//控制台输出 a=79 b=-33 c=1288
/*********************/
// 4嵌套函数的函数
/*********************/
func innerFunc(para1 :Int) -> Int {
var value = para1
func innerAdd() {
value = value * value
}
innerAdd()
return value
}
let innerFuncResult =innerFunc(para1: 34)
print("innerFunc(para1: 34) =\(innerFuncResult)")
//控制台输出 innerFunc(para1: 34) = 1156
/*********************/
// 5 函数指针
/*********************/
//返回值是((Int)->Int),是个函数地址第一个int是参数类型,第二个int是返回值
func getFuncPointer()->((Int)->Int) {
func sum(num:Int)->Int{
return num+num;
}
return sum;//返回一个函数地址
}
var funcPointer =getFuncPointer();
//funPointer是个函数指针
var pointReuslt =funcPointer(23);//函数的形式调用
print("pointReuslt =\(pointReuslt)")
//控制台输出 pointReuslt = 46
func get()->((Int)->String){
func post(count:Int)->String{
if count >50 {
return"success";
}else{
return"failed"
}
}
returnpost;
}
//函数指针/地址作为参数,函数作为参数传给函数,函数的传递
let funcPoint =get();//v8拿到的是get()函数的地址
let PointValue =funcPoint(58);//v9拿到的是get函数的返回值
print("funcPoint =\(PointValue)")
//控制台输出 funcPoint = success