func 函数名(形参:形参类型)->返回类形参调用:函数名(iz)
//使用外部参数,使函数用途更加明确
func join(string s1:String,toString s2:String,withJoiner joiner:String)->String
{
return s1+joiner+s2
}
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)")