06-Swift 函数

01-函数的定义与调用

// 函数的定义
func 问候(姓名 : String) -> String {
    
    return "你好 \(姓名)"
}

// 函数的调用
println(问候("Aaron"))

02-形式参数与返回值之多参与无参

// 多参
func 开区间长度(起始 : Int, 终止 : Int) ->Int {
    
    return 终止 - 起始
}

println(开区间长度(1, 100))

// 无参
func 问候() -> String {
    
    return "你好"
}

println(问候())

03-形式参数与返回值之忽略返回值

func 显示并计数(一个字符串 : String) -> Int {
    
    println(一个字符串)
    
    return countElements(一个字符串)
}

// 忽略返回值
显示并计数("Hello World")

04-形式参数与返回值之多返回值

func 取极值(整数数组 : [Int]) -> (Int, Int) {
    
    var 最大值 = 整数数组[0]
    var 最小值 = 整数数组[0]
    
    for 数组元素 in 整数数组[1..<整数数组.count] {
        
        if (数组元素 > 最大值) {
            最大值 = 数组元素
        } else if (数组元素 < 最小值) {
            最小值 = 数组元素
        }
    }
    
    return (最小值, 最大值)
}

var (最小值, 最大值) = 取极值([-10, -5, 5, 0, 12, 66, -53])

println(最小值)
println(最大值)

05-形式参数与返回值之可选类型返回值

func 取极值(整数数组 : [Int]) -> (min : Int, max : Int)? {
    
    if (整数数组.isEmpty) {
        return nil
    }
    
    var 最大值 = 整数数组[0]
    var 最小值 = 整数数组[0]
    
    for 数组元素 in 整数数组[1..<整数数组.count] {
        
        if (数组元素 > 最大值) {
            最大值 = 数组元素
        } else if (数组元素 < 最小值) {
            最小值 = 数组元素
        }
    }
    
    return (最小值, 最大值)
}

if var 临时数组 = 取极值([]) {
    println("最小值是\(临时数组.min), 最大值是\(临时数组.max)")
} else {
    println("临时数组为nil")
}

if var 临时数组 = 取极值([-10, 0, 23, 4435, -54236, 77, 233341]) {
    println("最小值是\(临时数组.min), 最大值是\(临时数组.max)")
} else {
    println("临时数组为nil")
}

06-本地参数与外部参数

func 问候(#姓名 : String, #头衔 : String) {
    
    // 本地参数
    println("你好 \(姓名) \(头衔)")
}

// 外部参数
问候(姓名: "Aaron", 头衔: "Student")

07-参数的默认值

func 问候(姓名 : String, 头衔 : String = "先生") {
    
    println("你好 \(姓名) \(头衔)")
}

问候("Aaron")

// 设置参数的默认值会将其变为外部参数
问候("Aaron", 头衔: "Student")

08-可变参数

func 成绩(学科 : String, 平时成绩集 : Int...) -> String {
    
    var 总成绩 = 0
    
    for 平时成绩 in 平时成绩集 {
        总成绩 += 平时成绩
    }
    
    return "\(学科) : \(总成绩)"
}

成绩("语文", 20, 30, 10, 30)
成绩("数学", 20, 75)

09-变量参数

func 右对齐(var 文本: String, 一行的长度: Int, 填充字符: String) ->String {
    
    let 填充的长度 = 一行的长度 - countElements(文本)
    
    for _ in 1...填充的长度 {
        
        文本 = 填充字符 + 文本
    }
    
    return 文本
}

let a = "Aaron"
右对齐(a, 20, "-")

10-inout参数

func swap(inout a: Int, inout b: Int) {
    
    a = b - a
    b = b - a
    a = b + a
}

var a = 1
var b = 3

swap(&a, &b)

11-函数的类型

// (Int, Int) -> Int 类型
func addTwoInts(a: Int, b: Int) ->Int {
    return a + b
}

// () -> () 类型
func printHelloWorld() {
    println("hello, world")
}

12-函数作为常量与变量

func 两个数相加(a: Int, b: Int) ->Int {
    return a + b
}

func 两个数相乘(a: Int, b: Int) ->Int {
    return a * b
}

var 临时函数 = 两个数相加
println("2 + 5 = \(临时函数(2, 5))")

临时函数 = 两个数相乘
println("2 × 5 = \(临时函数(2, 5))")

13-函数作为参数

func 两个数相乘(a: Int, b: Int) ->Int {
    return a * b
}

func 计算结果(a: Int, b: Int, 计算函数: (Int, Int) ->Int) {
    println("\(a) × \(b) = \(计算函数(a, b))")
}

计算结果(2, 6, 两个数相乘)

14-函数作为返回值

func 加(a: Int) ->Int {
    return a + 1
}

func 减(a: Int) ->Int {
    return a - 1
}

func 归零(正数: Bool) ->((Int) ->Int) {
    return 正数 ? 减 : 加
}

var a = 100
let b = 归零(a > 0)

while (a != 0) {
    println(a)
    a = b(a)
}

15-函数嵌套

func 归零(正数: Bool) ->((Int) ->Int) {
    // 嵌套的函数是私有的
    func 增加(a: Int) ->Int {
        return a + 1
    }
    func 减少(a: Int) ->Int {
        return a - 1
    }
    
    return 正数 ? 减少 : 增加
}

var a = 100
let b = 归零(a > 0)

while (a != 0) {
    println(a)
    a = b(a)
}


转载于:https://my.oschina.net/u/2309294/blog/370551

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值