微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Swift学习—函数

知识点:
  1. swift函数的不同点
  2. 无返回值的函数的三种写法
  3. 返回元组数据
  4. 外部参数名
  5. 外部参数名的简写
  6. 认参数值,有认参数值的时候,系统会自动的将参数名当成外部参数名。
  7. 在有认的参数值的情况下,增加一个下划线_,系统会忽略掉外部参数名
  8. 函数的形参认是常量,想要在函数体的内部改变形参的值,将其设置成var即可
  9. 输入输出参数及其注意点
示例代码

//: Playground - noun: a place where people can play

import UIKit

// sum函数名,num1和num2参数名,箭头后面的Int是返回类型
func sum(num1: Int,num2: Int) -> Int {
    return num1 + num2
}

sum(1,2)

// 无返回值的函数的三种写法
func nore1() -> Void {}
func nore2() -> () {}
func nore3(){}

// 返回元组数据
func getPoint() -> (Int,Int) {
    return (10,10)
}
func getPerson(id: Int) -> (name: String,age: Int){
    if id > 0 {
        return ("jack",20)
    } else {
        return ("nobody",10)
    }
}

var person = getPerson(10)
println("name: \(person.name),age: \(person.age)")

// 外部参数名,这里分别为name,age,no设置了外部参数名,stu_name,stu_age,stu_no
// 作用,方便阅读
func addStudent(stu_name name:String,stu_age age:Int,stu_no no:Int) {
    println("name: \(name),age: \(age),no:\(no)")
}

addStudent(stu_name: "jack",stu_age: 10,stu_no: 20)

// 外部参数名的简写,在内部形参名的前面加上#号,这样内部形参名就也可以充当外部参数名
func addStudent2(#name: String,#age: Int,#no: Int) {
    println("name: \(name),no:\(no)")
}

addStudent2(name: "Tom",age: 20,no: 222)

// 认参数值
// 这里给age了一个认值,所以调用的时候,不写也行
// 有认参数的形参,系统会给其提供一个外部参数名,和内部形参参数名相同
func addStudent3(#name: String,age: Int = 20) {
    println("name: \(name),age: \(age)")
}
addStudent3(name: "Smith")
addStudent3(name: "Hello",age: 10)

// 在有认参数名前增加一个下划线_,系统会忽略掉外部参数名
func addStudent4(name: String,_ age: Int = 20) {
    println("name: \(name),age: \(age)")
}
addStudent4("A",2)

// 函数的形参认是常量,如果想在函数的内部修改形参的值,将形参设置成var即可
func addStr(var initStr: String,suffix: String,num: Int) -> String {
    for _ in 0..<num {
        initStr += suffix
    }
    return initStr
}
addStr("A","B",10)

// 输入输出参数,类似于C中的根据地址改变函数中变量的值
/*
注意:
1、不能传入常量和字面量(比如10)数,因为他们都是不可更改的
2、传递参数时候,必须在实参的前面加上&
3、输入输出参数不能有认值
4、输入输出参数不能使可变参数
5、输入输出参数不能再使用let、var修饰(inout和let、var不能共存)
*/
func change(inout num: Int) {
    num = 10
}
var a = 20
// 凡是输入输出参数,调用的时候前面都要增加&符号
change(&a)
println(a)

// 如何在不使用第三个参数的情况下,交换两个数
func swap(inout a:Int,inout b:Int) {
    a = a + b
    b = a - b
    a = a - b
}
// 算法2
func swap1(inout a:Int,inout b:Int) {
//    异或运算的特点,相同的会抵消
    a = a ^ b
    b = a ^ b
    a = a ^ b
}

var temp1 = 10
var temp2 = 20
swap(&temp1,&temp2)
println("temp1 = \(temp1),temp2 = \(temp2)")


var temp3 = 30
var temp4 = 40
swap1(&temp3,&temp4)
println("temp1 = \(temp3),temp2 = \(temp4)")

// 输入输出函数的使用价值
// 举例:不用返回值也可以计算出和与差
// 有返回值写法
func sumAndMinus(num1: Int,num2: Int) -> (sum: Int,minus: Int) {
    return (num1 + num2,num1 - num2)
}
var result = sumAndMinus(10,20)
result.sum
result.minus

// 输入输出函数写法
func sumAndMinus2(num1: Int,num2: Int,inout sum:Int,inout minus:Int) {
    sum = num1 + num2
    minus = num1 - num2
}
var sum1 = 0
var minus1 = 0
sumAndMinus2(20,10,&sum1,&minus1)
sum1
minus1

原文地址:https://www.jb51.cc/swift/327118.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐