之前已经看过一些swift2,所以基本数据类型之类的就自动忽略了,直接从函数开始学习,不定期更新.
- 无参函数
func printaa(){
print("aa")
}
printaa();
运行结果
aa
- 空函数
func fun(){}
fun()
运行结果
- 有参函数
func printStr(Name: String){
print(Name)
}
let name1 = "Tom"
printStr(name1);
运行结果
Tom
- var: 定义变量
- let: 定义常量
func range(start: Int, end: Int){
var i = start
let e = end
for i; i < e; ++i{
print(i)
}
}
range(10, end: 15)
运行结果
10
11
12
13
14
- 本地参数名
- 就是定义函数名时,在参数列表中所写的参数名,它只可以在函数主体内使用
func fun2(statr: Int, end: Int, str: String){
}
- 外部参数名
- 在函数中,如果每一个参数的目的不是很明确或者是含糊不清的,那么对于其他开发者来说,是很 难理解参数的目的。
- 外部参数和本地参数的定义是 一样的。但是如果开发者需要更好的表达参数的功能,需要在定义时使用外部参数名。外部参数名需要
写在本地参数名之前,并使用空格将其分开
func join(s1: String, toString s2: String, joiner s3: String){
print("\(s1)\(s3)\(s2)")
}
join("ss", toString: "qq", joiner: "gg")
运行结果
ssggqq
- 设定参数默认值
- 注意:在使用默认值是需要注意以下几点:
- (1)定义时,将使用默认值的参数放在函数的参数列表的末尾。这确保了调用函数时候, 不会因 为省略参数值而影响不具备默认值的参数的顺序。
- (2)调用时,如果参数的默认值已经被设置,可以省略该参数的传值。
- (3)如果开发者设定了默认值,但在调用时想要改变默认值,也可以继续赋值。
- 注意:在使用默认值是需要注意以下几点:
func fun3(str: String, start: Int = 0, end: Int = 3){
var i = start
let e = end
for i; i < e; ++i{
print(str + "--\(i)")
}
}
fun3("aaa")
fun3("adsf", start: 10, end: 12)
运行结果
aaa--0
aaa--1
aaa--2
adsf--10
adsf--11
- 为外部参数设默认值
func join2(s1: String, toString s2: String, joiner s3: String = "gg"){
print("\(s1)\(s3)\(s2)")
}
join2("ll", toString: "qq")
运行结果
llggqq
- 可变参数, 参数个数不确定
- 在类型后面加三个点就是可变参数
- 在使用可变参数时,在一个函数中,可变参数只可以有一个。否则,就会出现错误。
func average(numbers: Double...){
var total: Double = 0;
for number in numbers{
total += number;
}
print(total)
}
average(1, 3, 5);
运行结果
3.0
- 常量参数和变量参数
- 在函数中,参数默认都是常量。如果想要改变一个函数参数的值,会引起程序错误
- 变量参数 的定义就是在参数名前使用一个 var 关键字
func alignRight(var string: String, col: Int, pad: String){
let cs = string.characters.count;
let padC = col - cs
for _ in 1...padC{
string = pad + string;
}
print(string)
}
alignRight("lq", col: 10, pad: "*")
alignRight("xxx", col: 10, pad: "*")
alignRight("xxxaaaddd", col: 10, pad: "*")
运行结果
********lq
*******xxx
*xxxaaaddd
- 输入-输出参数
- 设有两个整数a和b ,当需要交换a, b两个函数的值的时候,普通的参数,只能实现函数内部交换,函数外面的值不变,只有使用
输入-输出参数
才能完成交换 - 使用
输入-输出参数
定义函数时,只需在普通参数前面加上inout
- 调用函数时,需要在参数前面加上
&
否则会报错
- 设有两个整数a和b ,当需要交换a, b两个函数的值的时候,普通的参数,只能实现函数内部交换,函数外面的值不变,只有使用
func swip(inout a: Int, inout b: Int){
let temp = a
a = b
b = temp
}
var a = 10;
var b = 20;
print("a=\(a), b=\(b)")
swip(&a, b: &b)
print("a=\(a), b=\(b)")
运行结果:
a=10, b=20
a=20, b=10