//: Playground - noun: a place where people can play
import UIKit
var str = "Hello, playground"
/*
在学习函数之前我们先来了解一下什么是函数,函数在oc语言中的体现
/* Swift 函数 */
函数的介绍
函数相当于oc中的方法
函数的格式如下:
func 函数名(参数列表) -> 返回值类型{
代码块
return 返回值
}
func 是关键字,多个参数列表之间可以用逗号(,)分离,也可以没有参数
使用箭头“->”指向返回值类型
如果函数没有返回值,返回值为void 并且“->返回值类型“部分可以省略
*/
// 1 没有参数 没有返回值的 func
func about()->Void{
print("xixihahahahha")
}
// 调用函数
about()
// 简单写法 如果没有返回值,void可以写成()
func about2()->(){
print("我又来了")
}
about2()
// 3:如果没有返回值,后面的内容可以都不写
func about3(){
print("我什么都没有")
}
// 4 有参数但是没有返回值
func callPhone(phoneNum: String){
print("我的电话号码")
print(phoneNum)
}
callPhone(phoneNum: "+86 159 7029")
// 5 没有参数 但是有返回值的这种
func readMessage()-> String{
return "要去看书啦";
}
readMessage()
var strr = readMessage()
print(strr)
// 5 有参数,有返回值的这种类型
func myName(name: String ,age : String)->String{
return name + age
}
myName(name: "songxinzhe", age: "24")
/*
函数的使用注意
注意一:外部参数和内参数
在函数内部可以看到的参数,就是内部参数
在函数外面可以看到的参数,就是外部参数
默认情况下,从第二个参数开始,参数名称即是内部参数也是外部参数
如果第一个参数也想要有外部参数,可以设置标签:在变量名前加标签即可
如果不想要外部参数,可以在参数名称前加_
*/
// num1 和a是外部参数的名称
func ride(num1 :Int ,a num2 : Int,b num3 :Int)->Int{
return num1 * num2 * num3
}
var result1 = ride(num1: 20, a: 4, b: 5)
// 方法的重载机制: 方法名称不同,但是参数不同,可以称为方法的重载
func ride2(num1:Int, _ num2 :Int)-> Int{
return num1 * num2
}
var result2 = ride2(num1: 20, 10)
/*
注意二: 默认参数
某些情况,如果没有传入具体的参数,可以使用默认参数
*/
func makecoffee(type : String = "拿铁")-> String{
return "制作一杯\(type)饮料"
}
let coffee1 = makecoffee(type: "毛屎咖啡")
let coffee2 = makecoffee()
/*
注意三: 可变参数
swift中函数的参数个数可以变化,它可以接受不确定数量的输入类型参数
它们必须具有相同的类型
我们可以通过在参数类型名后面加入(...)的方式来指示这是可变参数
*/
func sum(numbers :Double...)-> Double{
var total: Double = 0
for number in numbers{
total += number
}
return total
}
sum(numbers: 100.0,20,10,50)
sum(numbers: 30,80)
/*
注意四: 引用类型(指针的传递)
默认情况下,函数的参数是值传递.如果想改变外面的变量,则需要传递变量的地址
必须是变量,因为需要在内部改变其值
Swift提供的inout关键字就可以实现
对比下列两个函数
*/
// 函数一:值传递
func swap( a : Int, b : Int) {
var b = b
var a = a
let temp = a;
a = b;
b = temp
print("a:\(a), b:\(b)")
}
var a = 20
var b = 10
swap(a: a, b: b)
print("a:\(a),b\(b)")
// 函数二:指针的传递
func swap1( a : inout Int, b : inout Int) {
let temp = a
a = b
b = temp
print("a:\(a), b:\(b)")
}
swap1(a: &a, b: &b)
print("a:\(a), b:\(b)")
/*
函数的嵌套使用
swift中函数可以嵌套使用
即函数中包含函数,但是不推荐该写法
*/
// 函数的嵌套
let value = 55
func test(){
func demo(){
print("demo\(value)")
}
print("test")
demo()
}
test()//执行函数会先打印'test',再打印'demo'
网友评论