01-swift函数

之前已经看过一些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
  • 调用函数时,需要在参数前面加上&否则会报错
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

你可能感兴趣的:(01-swift函数)