第一:函數(shù)類(lèi)型:
創(chuàng)新互聯(lián)是一家專(zhuān)業(yè)提供湘西土家族企業(yè)網(wǎng)站建設(shè),專(zhuān)注與成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、H5建站、小程序制作等業(yè)務(wù)。10年已為湘西土家族眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)網(wǎng)站制作公司優(yōu)惠進(jìn)行中。
/*
函數(shù)類(lèi)型:
類(lèi)似于C語(yǔ)言的指向函數(shù)的指針
類(lèi)似于OC語(yǔ)言的block
函數(shù)類(lèi)型是由函數(shù)的參數(shù)類(lèi)型和返回值類(lèi)型組成的
*/
// 這兩個(gè)函數(shù)的類(lèi)型是 (Int, Int) -> Int
func sum(a: Int, b: Int) ->Int
{
return a + b;
}
func sub(a: Int, b: Int) ->Int
{
return a - b;
}
//可以利用函數(shù)類(lèi)型定義函數(shù)變量和常量
var funcP:(Int, Int) -> Int = sum
funcP = sub
print(funcP(10, 20))
//函數(shù)類(lèi)型可以作為函數(shù)的參數(shù)
func calFunc(a: Int, b: Int ,Option:(Int, Int) -> Int) ->Int
{
return Option(a, b)
}
print(calFunc(10, b: 20, Option: sum))
print(calFunc(10, b: 20, Option: sub))
//函數(shù)類(lèi)型可以作為函數(shù)返回值
func max(a: Int, b: Int) -> Int
{
return a > b ? a : b
}
func min(a: Int, b: Int) -> Int
{
return a < b ? a : b
}
func chooseFunc(getMax:Bool) -> (Int , Int) -> Int
{
return getMax ? max : min
}
var funcP2:(Int , Int) -> Int = chooseFunc(false)
print(funcP2(10, 20))
第二 . 函數(shù):完成某個(gè)特定任務(wù)的代碼塊,給代碼起一個(gè)合適的名稱(chēng)稱(chēng)之為函數(shù)名稱(chēng).以后需要執(zhí)行代碼塊只需要利用函數(shù)名稱(chēng)調(diào)用即可,好比每個(gè)人都有一個(gè)名字,叫名字就能找到對(duì)應(yīng)的人
格式:
func函數(shù)名稱(chēng)(參數(shù)名:參數(shù)類(lèi)型,參數(shù)名:參數(shù)類(lèi)型...) ->函數(shù)返回值 {函數(shù)實(shí)現(xiàn)部分}
// 1.沒(méi)有參數(shù)沒(méi)有返回值
func about() -> Void {
print("iPhone7s Plus")
}
//沒(méi)有返回值的簡(jiǎn)單寫(xiě)法
func about1() {
print("iPhone7s")
}
about()
let view : UIView
// 2.有參數(shù)沒(méi)有返回值
func callPhone(phoneNum : String) {
print("打電話(huà)給\(phoneNum)")
}
callPhone("+86 110")
// 3.沒(méi)有參數(shù)有返回值
func readMessage() -> String {
return"吃飯了嗎?"
}
print(readMessage())
// 4.有參數(shù)有返回值
func sum(num1 : Int, num2 : Int) -> Int {
return num1 + num2
}
sum(20, num2: 30)
/*
嵌套函數(shù)
*/
func showArray(array:[Int])
{
for number in array
{
print("\(number), ")
}
}
var number = 998;
func bubbleSort(inout array:[Int])
{
print(number)
func swap(inout a:Int, inout b:Int)
{
print(number)
let temp = a
a = b
b = temp
}
let count = array.count;
for var i = 1; i < count; i++
{
for var j = 0; j < (count - i); j++
{
if array[j] > array[j + 1]
{
swap(&array[j], b: &array[j + 1])
// let temp = array[j]
// array[j] = array[j + 1]
// array[j + 1] = temp
}
}
}
}
var arr:Array<Int> = [31, 13, 52, 84, 5]
bubbleSort(&arr)
showArray(arr)
// 1.內(nèi)部參數(shù)和外部參數(shù)
//內(nèi)部參數(shù):在函數(shù)內(nèi)部可以看到的參數(shù)名稱(chēng),稱(chēng)之為內(nèi)部參數(shù)
//外部參數(shù):在函數(shù)調(diào)用時(shí),可以看到的參數(shù),成之為外部參數(shù)
//默認(rèn)情況下從第二個(gè)參數(shù)開(kāi)始,既是內(nèi)部參數(shù)也是外部參數(shù)
//如果希望將第一個(gè)參數(shù)也聲明稱(chēng)外部參數(shù),只需要在標(biāo)識(shí)符前加上外部參數(shù)的名稱(chēng)即可
func sum(num1 num1 : Int, num2 : Int) -> Int {
return num1 + num2
}
//函數(shù)的重載:函數(shù)名稱(chēng)相同,參數(shù)不同(1.參數(shù)的類(lèi)型不同 2.參數(shù)的個(gè)數(shù)不同)
func sum(num1 : Int, num2 : Int, num3 : Int) -> Int {
return num1 + num2 + num3
}
// 2.默認(rèn)參數(shù)
func makeCoffee(coffeeName : String = "拿鐵") -> String {
return "制作了一杯\(coffeeName)咖啡"
}
makeCoffee("雀巢")
makeCoffee("貓屎")
makeCoffee()
// 3.可變參數(shù)
func sum(nums : Int...) -> Int {
var result = 0
for num in nums {
result += num
}
return result
}
sum(12, 30, 40)
sum(44,20,30,44,55,66)
// 4.引用參數(shù)
var m = 20
var n = 30
//如果形參前面有inout,則需要傳遞指針到函數(shù)內(nèi)
func swapNum(inout m : Int,inout n : Int) {
let temp = m
m = n
n = temp
}
swapNum(&m, n: &n)
print("m:\(m) n:\(n)")
// 5.函數(shù)的嵌套使用(不常用)
func test() {
func demo() {
print("demo")
}
print("test")
demo()
}
test()
分享名稱(chēng):13.函數(shù)的類(lèi)型和基本使用
網(wǎng)站網(wǎng)址:http://www.rwnh.cn/article34/jepise.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開(kāi)發(fā)、網(wǎng)站設(shè)計(jì)、做網(wǎng)站、電子商務(wù)、網(wǎng)站收錄、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)