iOS激情详解之Swift (三)

<span style="font-size:18px;">// 函数
// 语法格式
//func name (参数) -> 返回值 {
// 函数实现提
//}
// 无参,无返回值
func hehe1()
{
    print("hehe1")
}

func hehe2() -> Void
{
    print("hehe2")
}
// 函数调用
hehe1()


// 有参
// 关于内部参数名
// 2,只在函数作用域内部使用的参数名
func hehe3 (name1: String , name2:String) {
    print("您好 \(name1) and \(name2)")
}
// 除了第一个参数,后面的参数在调用时会自动生成一个与内部参数名相同的外部参数名
// 原则上,第一个参数的外部参数名应该写在函数名的末尾
hehe3("李云飞", name2: "李永乐")


func hehe4Name (xingming1 name1: String ,xingming2 name2:String) {
    print("您好 \(name1) and \(name2)")
}

// 外部参数名的添加的规则,在内部参数名前面声明中间用空格隔开
// 只是增加代码的可读性
hehe4Name(xingming1:"李云飞", xingming2:"李永乐")


// 使用占位符 _ 省略掉自动生成的外部参数名
func hehe5 (name1: String , _ name2:String) {
    print("您好 \(name1) and \(name2)")
    
}

hehe5("李云飞","李云飞")

// 可以为参数赋初始值 调用时传参则更改,不传参 使用初始值
func hehe6(name: String = "李云飞" , name2:String = "李云飞") {
    print("您好 \(name) and \(name2)")
    
}

// hehe6()
hehe6(name2:"hehe")
// *************关于参数 到此结束

// 有返回值情况
// 返回值直接给类型
func gaga() -> String {
    return "gagagagagagaga"
}
gaga()

var str = "gagagagagagaga"
func yy (name:String ) -> (Int,Int)
{
    var num1 = 0 // 元音
    var num2 = 0 // 辅音
    for tempStr in name.characters
    {
        switch tempStr {
        case "a","e","i","o","u":
            // 如果元音 打断循环
            num1++
        default:
            num2++
            
        }
    }
    return (num1,num2)
}

yy(str).0
yy(str).1</span>
<span style="font-size:18px;">// 不确定参数个数 参数个数可变
func count2 (numbers:Int...) ->Int
{
    var sum = 0
    // 不确定个数的参数,作为数组使用
    for num in numbers {
        sum += num
    }
    return sum
}
count2(1,2,3,4,5,6)

// 参数在函数体内默认是不可变的
func count3 (var a:Int, b:Int) -> Int {
    //     a =  a + b
    a++
    //  b++
    return a
}

var c = 22
c = count3(c, b: 0)
c

// inout修饰参数 将外部变量的地址传进来,从而改变外部变量的值
func changeValue (inout a: Int)
{
    a++
}
changeValue(&c)
c
</span>

<span style="font-size:18px;">// 函数嵌套:函数作用域中定义了另一个函数,内层函数的作用域可以使用外层函数的参数
func helloLanou(var num: Int)
{
    num++
    func hello23()
    {
        num++
    }
    hello23()
    num
}
helloLanou(10)

// 函数的返回值是嵌套的函数
// 函数类型  参数int 返回值为String
func hellolanou2() -> ((Int) -> String)
{
    func hanshu(i:Int) -> String
    {
        return "\(i)"
    }
    return hanshu
    
}

hellolanou2()
let hanshu = hellolanou2()
let i = hanshu(1)


// 声明一个函数,实现功能:传入"+"-"*"/"的字符串,返回对应得运算的函数"+"---返回int + int = int
// 参数string 返回值是int的函数



// 函数返回值是函数 可以用函数嵌套的形式实现 但是并不是必须使用嵌套实现
func yunsuan(str:String) -> ((Int,Int) ->Int )

{
    func all(num1:Int, num2:Int) ->Int
    {
        switch str
        {
        case "+":
            return num1 + num2
        case "-":
            return num1 - num2
        case "*":
            return num1 * num2
        case "/":
            return num1 / num2
        default:
            return 0
        }
    }
    return all
    
}

let fuhao1 = yunsuan("+")
let sum1 = fuhao1(1,2)

</span>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值