函数
func 函数名(形参:形参类型)->返回类形参调用:函数名(iz)
//使用外部参数,使函数用途更加明确
1 func join(string s1:String,toString s2:String,withJoiner joiner:String)->String 2 3 { 4 5 return s1+joiner+s2 6 7 } 8 9 10 11 println(join(string:"Hello",toString:"World",withJoiner:"."))
//简写外部参数名
//如果需要提供外部参数名,但是局部参数名已经定义好了,那么不需要写两次这些参数名
//相反,只写一次参数名,并用#号作为前缀就可以了,这告诉swift使用这个参数名作为局部和外部参数名
func containCharacter(#string: String,#characterToFind:Character)->Bool { for character in string { if(character==characterToFind) { return true } } return false } let containsAvee = containCharacter(string:"sdfasdfsd",characterToFind:"z") println(containsAvee)
//默认参数值
func jo1in(string s1:String,toString s2:String,withJoiner joiner:String=",")->String { return s1+joiner+s2 } let str1 = jo1in(string :"hello",toString:"world") println(str1)
//默认值参数的外部参数名
// 当未给带默认值的参数提供外部参数名时,swift会自动提供外部名字,此时外部参数名与局部参数名一样,就像已经在局部参数名前写了#一样
func jo3in(s1:String,s2:String,joiner:String=",")->String { return s1+joiner+s2 } let st1 = jo3in("hello","world",joiner:"--") println(st1)
//可变参数
//传入可变参数的值在函数体内当做这个类型的一个数组。例如一个叫做numbers的Double...型可变参数,在函数体内可以当作一个叫numbers的Double[]型的数组常量
//一个函数至多能有一个可变参数
//可变参数必须放在参数表中最后的位置
func aritheticMean(numbers:Double...)->Double { var total:Double = 0 for number in numbers { total+=number } return total/Double(numbers.count) } println(aritheticMean(1.2,3.4,3.6,2.4))
//常量参数和变量参数
//通过在参数名前加关键字 var 来定义变量参数
func alignRight(var string:String,count:Int,pad:Character) ->String { let amountToPad = count-countElements(string) for _ in 1...amountToPad { string = pad+string } return string } let originalString = "Hello" let paddedString = alignRight(originalString,10,"-") println(originalString) println(paddedString)
//输入输出参数
//变量参数,正如上面所述,仅仅能在函数体内被更改,如果你想要一个函数可以修改参数的值,并且想要这些修改在函数调用结束后仍然存在,那么就应该把这个参数定义为输出输出参数(In-Out Parameters)
//定义一个输入输出参数,在参数前面加inout关键字
//输入输出参数不能有默认值,而且可变参数不能使用inout标记,这个参数不能呗var或者let标记
func swapTwoInts(inout a:Int,inout b:Int) { let temp = a a=b b=temp }
//只能传入一个变量作为输入输出参数
var someInt = 3 var anotherInt = 7
//当传入的参数作为输入输出参数时,需要在参数的前面加&,表示这个值可以被函数修改
swapTwoInts(&someInt,&anotherInt) println("\(someInt)\(anotherInt)")