Java中方法的定義和調(diào)用
//java:求和
public int add(int a,int b){
return a+b;
}
add(10,15);
在Swift中函數(shù)的定義
function:功能 作用 函數(shù)
func 函數(shù)名(參數(shù)名1:參數(shù)類型偏陪,參數(shù)名2:參數(shù)類型...)->返回值類型{
函數(shù)體...
return 返回值
}
調(diào)用:函數(shù)名(參數(shù)名:實參1卸亮,參數(shù)名:實參2)
//有參返回值的函數(shù)
func add(a:Int,b:Int)->Int{
let sum = a + b
return sum;
}
print(add(a:10,b:30))
常用的集中函數(shù)類型
*無參無返回值
func test1()->Void{
print("這是一個無參無返回值的函數(shù)")
}
test1()
func test2()->(){
print("這是一個無參無返回值的函數(shù)")
}
test2()
func test3(){//最常用
print("這是一個無參無返回值的函數(shù)")
}
test3()
*有參無返回值
func call(phoneNumber:String){
print("給\(phoneNumber)打電話")
}
call(phoneNumber:"10001")
*無參有返回值
func getMsg()->String{
return "這是一條來自10086的信息"
}
print(getMsg())
使用注意
1:函數(shù)的參數(shù)默認都是let 類型
2:返回值返回多個:可以用元組或者數(shù)組等
func say(info:String){
info = "哈哈"
print("傳入的信息:\(info)")
}
say(info:"今天是星期四")
//思考:調(diào)用之后的輸出結(jié)果亭引?報錯:info 作為一個常量
//案例二:定義一個函數(shù):找到數(shù)組里的最大值和最小值称开,然后返回
func getMaxAndMin(array:[Int])->(Int,Int){
let min = array.min()
let max = array.max()
return (min!,max!)
}
var scores = [90,85,66,77]
let result = getMaxAndMin(array:scores)
print("最低分:\(result.0),最高分:\(result.1)")
內(nèi)部和外部參數(shù)名
一糟把、默認參數(shù)
func order(item:String="奶茶")->String {
return "您點了\(item)"
}
//調(diào)用時可以再次賦值绢涡,或者不處理
print(order(item:"面包"))
print(order())
//思考:我們之前學過了那個函數(shù),里面涉及了默認參數(shù)遣疯?-print
print(1,2,3,4)
print(1,2,3,4,separator:"!",terminator:"?")
二雄可、可變參數(shù)-傳入的參數(shù)個數(shù)不確定的時候
需求:求2個Int型整數(shù)的和
需求:求3個Int型整數(shù)的和
想法:能不能設(shè)計一個函數(shù)凿傅,任意個數(shù)的和?
函數(shù)他的參數(shù)個數(shù)是不確定的----》可變參數(shù)
//通過在變量類型名后面加入(...)的方式定義可變參數(shù)
func add(nums:Int...)->Int{
//問題:使用nums這個可變參數(shù)数苫?
print(type(of:nums)) //可變參數(shù)當數(shù)組來處理
var sum = 0
for i in nums{
sum += i
}
return sum
}
print(add(nums:10,20))
print(add(nums:10,20,30))
三、輸入輸出參數(shù)
//引入:為什么需要輸入輸出參數(shù)
//需求:定義一個swap函數(shù)虐急,交換a\b兩個參數(shù)的值
/*
func swap(a:Int,b:Int){
let tmp = a
a = b
b = tmp
print("a:\(a),b:\(b)")
}
swap1(a:10,b:30)
*/
//代碼報錯:默認情況下參數(shù)都是let類型箱残,你可以把值傳給它,不能改變
如果你想要一個函數(shù)可以修改參數(shù)的值止吁,并且想要在這些修改在函數(shù)調(diào)用結(jié)束后仍然存在
那么就應(yīng)該把這個參數(shù)定義為輸入輸出參數(shù)(In-Out Parameters).
(1)定義一個輸入輸出參數(shù)時被辑,使用inout關(guān)鍵字
(2)只能傳遞變量給輸入輸出參數(shù),傳入常量或者字面量敬惦。需要在參數(shù)名前加&符盼理,表示這個
值可以被函數(shù)修改
func swap2(a:inout Int,b:inout Int){
let tmp = a
a = b
b = tmp
print("a:\(a),b:\(b)")
}
var num1 = 10
var num2 = 30
swap2(a:&num1,b:&num2)
print("num1:\(num1),num2:\(num2)")
函數(shù)類型
每個函數(shù)都有種特定的函數(shù)類型,函數(shù)的類型由函數(shù)的參數(shù)類型和返回類型組成
func add(a:Int,b:Int)->Int{
return a+b
}
func minus(a:Int,b:Int)->Int{
return a-b
}
/*
add函數(shù)的類型是:(Int,Int)->Int,可以解讀為:
“這個函數(shù)類型有兩個Int型的參數(shù)并返回一個Int型的值”
*/
func printHelloWorld(){
print("hello,world")
}
/*
printHelloWorld()函數(shù)的類型:()->Void,或者叫“沒有參數(shù)俄删,并返回Void類型的函數(shù)”
*/
函數(shù)類型的使用
//使用場景一:把一個函數(shù)給常量或變量時宏怔,你可以讓Swift來推斷其函數(shù)類型
var op = add //op是一個函數(shù),(Int,Int)->Int
print(op(10,30))//add(10,30)
op = minus
print(op(10,30))//minus(10,30)
//使用場景二:函數(shù)作為參考
func printResult(a:Int,b:Int,mathFunc:(Int,Int)->Int){
print(mathFunc(a,b))
}
printResult(a:10,b:20,mathFunc:add)
printResult(a:10,b:20,mathFunc:minus)
//使用場景三:函數(shù)作為返回值
func getFunctiona(a:Int)->(Int,Int)->Int{
if a>10{
return add
}else{
return minus
}
}
print(getFunctiona(a:12)(10,20))
print(getFunctiona(a:4)(10,20))