文章是根據(jù)
The Swift Programming Language
來(lái)總結(jié)的制肮,今天就學(xué)習(xí)一下最基礎(chǔ)的函數(shù)
用法康二,本文總結(jié)的是函數(shù)的聲明
與使用
OC的方法聲明與使用
// 沒(méi)有參數(shù)碳胳,沒(méi)有返回值
- (void)sayHolle{
NSLog(@"Hello, Objective-C");
}
// 一個(gè)參數(shù),沒(méi)有返回值
- (void)oneParam:(NSString *)name{
NSLog(@"%@", name);
}
// 多個(gè)參數(shù)沫勿,沒(méi)有返回值
- (void)moreParam:(NSString *)name age:(NSInteger)age score:(double)score{
NSLog(@"%@--%@--%@", name, @(age), @(score));
}
// 沒(méi)有參數(shù)挨约,有返回值
- (NSString *)returnMyName{
return @"daisuke";
}
// 多個(gè)參數(shù),有返回值
- (NSString *)getInfoWithName:(NSString *)name age:(NSInteger)age score:(double)score{
return [NSString stringWithFormat:@"%@--%@--%@", name, @(age), @(score)];
}
- (void)viewDidLoad {
[super viewDidLoad];
[self getInfoWithName:@"daisuke" age:24 score:99];
}
Swift的函數(shù)聲明與使用
函數(shù)的格式:
func 函數(shù)名(參數(shù): 參數(shù)類型...) -> 返回值 { // 代碼實(shí)現(xiàn) }
沒(méi)有返回值的時(shí)候产雹,
-> 返回值
可以省略默認(rèn)情況下诫惭,在調(diào)用函數(shù)時(shí),第一個(gè)參數(shù)名是省略的
沒(méi)有參數(shù)蔓挖,沒(méi)有返回值
// 沒(méi)有參數(shù)夕土,沒(méi)有返回值
func printlOut(){
print("Hello,Swift")
}
// 調(diào)用函數(shù)
printlOut()
// 或者
func printlOut1() ->Void{
// 沒(méi)有返回值的時(shí)候,->void可以省略
print("Hello,Swift")
}
// 調(diào)用函數(shù)
printlOut1()
聲明一個(gè)參數(shù)的函數(shù)
// 聲明一個(gè)參數(shù)的函數(shù)
func testOneParam (age:(Int)){
print("My age is \(age)")
}
// 調(diào)用函數(shù)
testOneParam(10)
聲明多個(gè)參數(shù)的函數(shù)
// 聲明多個(gè)參數(shù)的函數(shù)
func testMoreParam (age:(Int), name:(String), score:(Double)){
print("My name is \(name) and age is \(age) and score is \(score)")
}
// 調(diào)用函數(shù),注意調(diào)用的時(shí)候?yàn)榱朔奖銈魅氲膮?shù)能對(duì)應(yīng)起來(lái)时甚,并且方便閱讀隘弊,參數(shù)前面需要些參數(shù)的名稱加冒號(hào)哈踱,第一個(gè)不寫
testMoreParam(10, name: "daisuke", score: 100.0)
_的作用
// 當(dāng)然,如果你覺(jué)得這樣寫不好梨熙,可以省略參數(shù)名开镣,就是在聲明函數(shù)的時(shí)候參數(shù)名前面加入下劃線_,而且默認(rèn)第一個(gè)已經(jīng)省略了
// 聲明多個(gè)參數(shù)的函數(shù)
func testMoreParam1 (age:(Int), _ name:(String), _ score:(Double)){
print("My name is \(name) and age is \(age) and score is \(score)")
}
testMoreParam1(10, "daisuke", 100.0)
有返回值,沒(méi)有參數(shù)
// 有返回值咽扇,沒(méi)有參數(shù)
func getMyName() ->String{
return "daisuke"
}
var name = getMyName()
print(name)
有返回值邪财,有參數(shù)
// 有返回值,有參數(shù)
func getMyInfo(name:String, age:Int) ->String{
return "my name is \(name) and age is \(age)"
}
var info = getMyInfo("daisuke", age: 24)
print(info)
嵌套函數(shù)
// 嵌套函數(shù)
func getAllInfo(name:String, _ age:Int, score:Double) ->String{
let info = getMyInfo(name, age: age)
return "\(info) and score is \(score)"
}
let allInfo = getAllInfo("daisuke", 23, score: 100)
print(allInfo)
Swift的類型
函數(shù)類型:1质欲、類似于C語(yǔ)言的指向函數(shù)的指針树埠。2、類似OC語(yǔ)言的block嘶伟。3怎憋、函數(shù)類型是由函數(shù)的參數(shù)類型和返回值類型組成的
先定義兩個(gè)通用函數(shù)
// 加法函數(shù)
func sum(a: Int, b: Int) ->Int{
return a+b
}
// 減法函數(shù)
func sub(a: Int, b: Int) ->Int{
return a-b
}
利用函數(shù)類型定義函數(shù)變量和常量
// 利用函數(shù)類型定義函數(shù)變量和常量
var funcSum :(Int, Int) ->Int = sum
print(funcSum(10, 20))
// 30
funcSum = sub
print(funcSum(10, 20))
// -10
** 這里解釋一下,可以理解為sum函數(shù)的聲明九昧,跟變量的類型聲明必須一樣绊袋,那就相當(dāng)于變量funcSum就是函數(shù)sum了,所以funcSum = sum,就相當(dāng)于funcSum是加法函數(shù)铸鹰,得出的值是30.而funcSum = sub就相當(dāng)于減法函數(shù)癌别,的出來(lái)的值是-10. **
函數(shù)類型可以作為函數(shù)的參數(shù)
// 加法函數(shù)當(dāng)做參數(shù)
func scoreFunc(math: Int, english: Int, sum:(Int, Int) ->Int) ->Int
{
return sum(math, english)
}
var totalScore = scoreFunc(100, english: 60, sum: sum)
print(totalScore)
// 160
// 減法函數(shù)當(dāng)做參數(shù)
func scoreFuncSub(totalScore: Int, math: Int, sub:(Int, Int) ->Int) ->Int
{
return sub(totalScore, math)
}
var subScore = scoreFuncSub(100, math: 50, sub: sub)
print(subScore)
// 50
** 可以理解為參數(shù)就是一個(gè)函數(shù),但是參數(shù)的類型跟函數(shù)的類型必須一樣蹋笼,無(wú)論參數(shù)還是返回值展姐,sum:(Int, Int) ->Int就是跟func sum(a: Int, b: Int) ->Int兩個(gè)類型必須一樣,總結(jié)一句話剖毯,就是函數(shù)就是一個(gè)參數(shù) **
函數(shù)類型可以作為函數(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 chooseTrue:(Int, Int) ->Int = chooseFunc(true)
print(chooseTrue(10,30))
// 30
var chooseFalse:(Int, Int) ->Int = chooseFunc(false)
print(chooseFalse(10,30))
// 10
** chooseFunc函數(shù)的返回值就是一個(gè)函數(shù)圾笨,而且他是根據(jù)參數(shù)getMax判斷是否取最大還是最小,當(dāng)true的時(shí)候取最大的函數(shù)max逊谋,也教師返回max函數(shù)墅拭,而max函數(shù)賦值給類型一樣的變量chooseTrue,前面已經(jīng)有例子涣狗,所以chooseTrue也就相當(dāng)于max函數(shù),調(diào)用chooseTrue函數(shù)就是max函數(shù) **
想了解更多舒憾,歡迎來(lái)我的個(gè)人網(wǎng)站daisuke