格式:
func 函數(shù)名稱(形式參數(shù)1 : 形參類型 ,...)-> 返回值類型
{
// 邏輯代碼
}
// override代表是重寫了父類的方法
override func 函數(shù)名稱(形式參數(shù)1 : 形參類型 ,...)-> 返回值類型
{
// 邏輯代碼
}
一、無參數(shù),無返回值
// 定義函數(shù)
func say() -> void
{
print("say hello")
}
// 函數(shù)調(diào)用
say()
幾種簡(jiǎn)寫形式:func say() -> () // void可以簡(jiǎn)寫成:()
func say() // 或是直接省略
二、無參數(shù),有返回值
func getNumber() -> Int
{
return 998
}
print ( getNumber())
如果想要返回多個(gè)值,OC中的辦法是使用指針來實(shí)現(xiàn),在swift中我們使用的是元祖。
func getNumber() -> (Int , Int)
{
return (1 , 998)
}
三、有參數(shù),無返回值
func sum (num1 : Int , num2 : Int)
{
print (num1 + num2)
}
sum (10 , num2 : 20)
// 注意函數(shù)調(diào)用的這里
// swift2.0開始,默認(rèn)將第二個(gè)參數(shù)名作為外部參數(shù)。
// 從第二個(gè)參數(shù)開始后面的參數(shù)名稱作為標(biāo)簽名稱。
如何指定標(biāo)簽
func sum (Value1 num1 : Int , Value2 num2 : Int)
{
print (num1 + num2)
}
sum (Value1 : 10 , Value2 : 20)
// 現(xiàn)在指定標(biāo)簽就是Value1、Value2了
如何忽略指定標(biāo)簽
func sum (num1 : Int , _num2 : Int)
{
print (num1 + num2)
}
sum (10 , 20)
// 本來默認(rèn)第二個(gè)參數(shù)的名稱是作為標(biāo)簽的,在參數(shù)名前面加了下劃線后就忽略了。
常量形參和變量形參(也就是OC中所說的值傳遞和地址傳遞)
- 默認(rèn)情況下所有的形參都是常量形參,也就是說在函數(shù)中修改形參的值,是不會(huì)影響外部實(shí)參的值。
- 變量形參,只需在形參名稱前面加上inout即可。
func change(inout num1 : Int , inout num2 : Int)
{
let temp = num1
num1 = num2
num2 = temp
}
var n = 10
var m = 20
chang(&n , num2:&m)
// 這步之后 n = 20 , m = 10
-
inout修飾的參數(shù)是var類型的。
示例
可變參數(shù)
- 當(dāng)一個(gè)函數(shù)不確定接收多少個(gè)參數(shù)的時(shí)候,就可以使用可變參數(shù)。
func sums (numbers : Int... ) // numbers必須制定類型,傳入的是同種類型
{
var sum = 0
for number in numbers // numbers的本質(zhì)是一個(gè)數(shù)組
{
sum += number
}
print(sum)
}
sums(1,2,5)
func sums (numbers : Int... , value : Float)
{
var sum = 0
for number in numbers
{
sum += number
}
print(sum)
print(value)
}
sums(1,2,5, value: 11.3)
參數(shù)默認(rèn)值
- 可以給形參制定默認(rèn)值,如果一個(gè)形參制定了默認(rèn)值,那么調(diào)用的時(shí)候就可以不傳遞參數(shù)的值。如果是傳遞了參數(shù),就優(yōu)先使用傳入的值。
func joinString(str1 : String, str2 : String = "哈哈", str3 : String)
{
print(str1,str2,str3)
}
// 輸出:你,我,他
joinString("你", str2: "我", str3: "他")
// 輸出:你,哈哈,他
joinString("你", str3: "我")
四、有參數(shù),有返回值
func sum( num1 : Int , num2 : Int) -> Int
{
return num1 + num2
}
let a = sum( 20 , mun2:10)
