码迷,mamicode.com
首页 > 编程语言 > 详细

Swift学习—函数

时间:2015-05-20 13:20:40      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:

知识点:

  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), age: \(age), 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




Swift学习—函数

标签:

原文地址:http://my.oschina.net/are1OfBlog/blog/417178

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!