//1.定义函数
func 函数名(传入的值:String) ->String{
return 传入的值
}
let 传入值 = "hallow xiaozhou"
println("函数调用的结果为:\(函数名(传入值))")
//3.函数的形式参数和它的返回值
//3.1多参和无参
//3.1.1 多参
func 长度(起始值:Int,终止值:Int) ->Int {
return 终止值 - 起始值
}
println("多参的最终结果为:\(长度(2,6))")
//多参的最终结果为:4
//3.1.2无参
func 问候语() -> String {
return "你好"
}
println("接电话时,礼貌的做法是:第一句说\(问候语())")
//接电话时,礼貌的做法是:第一句说你好
//3.2无返回值
func 显示并计数(字符串:String){
println("\(字符串)的长度为\(countElements(字符串))")
}
显示并计数("泪滴嘎嘎")
//泪滴嘎嘎的长度为4
//3.3多返回值(返回值为元祖)
func 取极值(数组:[Int]) -> (max:Int,min:Int) {
var 最大值 = 数组[0]
var 最小值 = 数组[0]
for 变数 in 数组 {
if 变数 > 最大值 {
最大值 = 变数
}elseif 变数 < 最小值 {
最小值 = 变数
}
}
return (最大值,最小值)
}
let array = [2,10,-1,23,72,7,1,100]
let (max,min) = 取极值(array)
println("数组\(array)中最大值为:\(max),最小值为:\(min)")
//数组[2,10,-1,23,72,7,1,100]中最大值为:100,最小值为:-1
//3.4可选元祖返回,添加"?"变为可选
func 取极值2(数组:[Int]) -> (max:Int,min:Int)? {
if 数组.isEmpty {
returnnil
}else{
var 最大值 = 数组[0]
var 最小值 = 数组[0]
for 变数 in 数组 {
if变数 > 最大值 {
最大值 = 变数
}elseif 变数 < 最小值 {
最小值 = 变数
}
}
return(最大值,最小值)
}
}
//[Int]()空数组
let 极值 = 取极值2([Int]())
println("极值为:\(极值)")
//极值为:nil
let 极值2 = 取极值2([1,2,3,4,0])
println("极值2为:\(极值2)")
//极值2为:(4,0)
//4.本地参数和外部参数
//4.1有外部参数的函数(姓名,性别都是外部参数)
func 个人信息(姓名 name:String,性别 sex:String) ->String{
return "你的姓名为:\(name),性别为:\(sex)"
}
let 信息 = 个人信息(姓名: "小周",性别:"女")
println("个人信息:\(信息)")
//个人信息:你的姓名为:小周,性别为:女
//4.2本地参数名和外部参数名的统一(#)
func 个人信息2(#姓名:String,#性别:String) ->String{
return "你的姓名为:\(姓名),性别为:\(性别)"
}
let 信息2 = 个人信息2(姓名: "小周",性别:"女")
println("个人信息:\(信息2)")
//个人信息:你的姓名为:小周,性别为:女
//5.参数默认值
func 个人信息3(姓名:String,性别:String ="男") ->String {
return "你的姓名为:\(姓名),性别为:\(性别)"
}
//5.1调用方法一:不用默认值("性别:"->有参数默认值自动把本地参数变成外部参数名 )
let 信息3 = 个人信息3("小周",性别:"女")
println("个人信息:\(信息3)")
//个人信息:你的姓名为:小周,性别为:女
let 信息4 = 个人信息3("小周")
println("个人信息:\(信息4)")
//个人信息:你的姓名为:小周,性别为:男
//6.可变参数(数组集:Int...传的数组个数不一样),如果有多个参数,一定要把可变参数放在最后,不易混淆
func 求和(其他值:String,数字集:Int...) ->Int{
var 和 = 0
for 值 in 数字集 {
和 += 值
}
return 和
}
//1,2,3,5数字集,还可以向后面添加值,如:1,5,6,8,4,9等
let 和 = 求和("10",5)
println("和为:\(和)")
//和为:11
//7.可变参数
let 名字 = "小周"
//必须是”var“,不然默认是“let”,不可变
func 居右对齐(var 原文本:String,长度:Int,填充字符:String) ->String{
let 要填充的长度 = 长度 - countElements(原文本)
for _ in 1...要填充的长度 {
原文本 = 填充字符 + 原文本
//在原文本的前面添加填充字符
}
return 原文本
}
let b = 居右对齐(名字,"@")
println(b)
//@@@@@@@@小周
//8.In-Out参数(可以直接改变传进去参数的值)
func 交换值(inout a:Int,inout b:Int){
let tem= a
a = b
b = tem
}
var a1 = 10,a2 = -10
交换值(&a1,&a2)
println("a1原来的值为10,现在为\(a1),a2原来的值为-10,现在为\(a2)")
//a1原来的值为10,现在为-10,a2原来的值为-10,现在为10
//9.函数类型作为变量和常量
func 两个数相加(a:Int,b:Int)->Int {
returna+b
}
func 两个数相乘(a:Int,b:Int)->Int {
returna*b
}
var 临时 = 两个数相加
临时(2,5)//7
临时 = 两个数相乘
临时(2,5)//10
//10.函数类型作为参数
func 显示相乘结果 (a:Int,b:Int,相乘函数:(Int,Int) ->Int) {
let 结果 = 相乘函数(a,b)
println("\(a)乘\(b)等于\(结果)")
}
显示相乘结果(10,100,两个数相乘)
//10乘100等于1000
func 判断加减(正:Bool) -> (Int)->Int {
//对外不可见
func 加(数:Int) ->Int{
return数+1
}
func 减(数:Int) ->Int{
return数-1
}
return 正 ? 减 : 加
}