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), 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
时间: 2024-10-13 02:47:54

Swift学习—函数的相关文章

Swift学习——函数的使用和分类(四)

总结了一下Swift中的函数使用一共可以分为七类 1 ---- 没有返回值,没有参数的函数 2 ---- 有参数和返回值的函数 3 ---- 使用元祖来返回多个值 4 ---- 参数是可变的 5 ---- 函数的嵌套 6 ---- 函数可以作为另一个函数的返回值 7 ---- 函数可以作为参数 具体分析如下面代码所示 // 1 ---- 没有返回值,没有参数的函数 func function1() { println("----in function1----") } //调用函数 f

Swift学习-----函数

/*: 函数: * 函数是用来完成特定任务的独立的代码块.你给一个函数起一个合适的名字,用来标识函数做什么,并且当函数需要执行的时候,这个名字会被用于“调用”函数 * 格式: * func 函数名称(参数名:参数类型, 参数名:参数类型...) -> 函数返回值 { 函数实现部分 } */ /* 没有参数没有返回值 1. 可以写为 ->Void 2. 可以写为 ->() 3. 可以省略 * Void.它其实是一个空的元组(tuple),没有任何元素,可以写成() */ func say(

Swift学习——A Swift Tour 函数

Functions and Closures  函数和封闭性(闭包) Functions  函数的使用 Swift中的函数定义和OC中有明显的差别了,使用func定义函数,在括号里定义參数和类型,用 -> 定义返回值类型 func greet(name: String, day: String) -> String { return "Hello \(name), today is \(day)." } greet("Bob", "Tuesda

Swift学习(2函数闭包)

函数的定义 1.函数的基础写法 func 函数名(形参列表)->返回值类型 例: func sum(x:int ,y:int) -> int{ return x+y } print(sun(x:10,y:50)) 2.外部参数的使用,就是在形参前加一个名字,外部参数不会影响函数内部细节,外部参数会让外部调用看起来更加的直观 例:func sum(num1 x:int ,num2 y:int )-> int{ return x+y } print(sum(num1:30,num2:40))

swift学习笔记(三)关于拷贝和引用

在swift提供的基本数据类型中,包括Int ,Float,Double,String,Enumeration,Structure,Dictionary都属于值拷贝类型. 闭包和函数同属引用类型 捕获则为拷贝.捕获即定义这些常量和变量的原作用域已不存在,闭包仍然可以在闭包函数体内引用和修改这些值 class属于引用类型. Array的情况稍微复杂一些,下面主要对集合类型进行分析: 一.关于Dictionary:无论何时将一个字典实例赋给一个常量,或者传递给一个函数方法时,在赋值或调用发生时,都会

Swift学习笔记十二:下标脚本(subscript)

下标脚本就是对一个东西通过索引,快速取值的一种语法,例如数组的a[0].这就是一个下标脚本.通过索引0来快速取值.在Swift中,我们可以对类(Class).结构体(structure)和枚举(enumeration)中自己定义下标脚本的语法 一.常规定义 class Student{ var scores:Int[] = Array(count:5,repeatedValue:0) subscript(index:Int) -> Int{ get{ return scores[index];

Swift学习——A Swift Tour 枚举和结构体

Enumerations and Structures Enumerations   枚举的使用 使用 enum 定义一个枚举,枚举里面可以关联方法,比如下文中的描述方法 enum Rank: Int { case Ace = 1 case Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten case Jack, Queen, King func simpleDescription() -> String { switch self { ca

Swift学习笔记(二)参数类型

关于参数类型,在以前的编程过程中,很多时间都忽视了形参与实参的区别.通过这两天的学习,算是捡回了漏掉的知识. 在swift中,参数有形参和实参之分,形参即只能在函数内部调用的参数,默认是不能修改的,如果想要修改就需要在参数前添加var声明. 但这样的声明过后,仍旧不会改变实参的值,这样就要用到inout了,传递给inout的参数类型必须是var类型的,不能是let类型或者字面类型,(字面类型是在swift中常提的一个术语,个人认为就是赋值语句,也不能修改)而且在传递过程中,要用传值符号"&

Swift学习——Language Guide 基础

The Basics Swift is a new programming language for iOS and OS X app development. Nonetheless, many parts of Swift will be familiar from your experience of developing in C and Objective-C. Swift是用于开发IOS和Mac OS系统应用的新的编程语言,如果你曾经使用过C或者OC开发IOS程序,那你会发现他们和S