iOS讲解迷惑--Swift中函数的使用

17 篇文章 0 订阅
5 篇文章 0 订阅


import UIKit

var str = "Hello, playground"


// 函数
// 语法格式
/*
func name (参数列表) -> 返回值 {
    函数实现体
}
*/

// 无参, 无返回值
func hello1(){
    print("hello1")// "hello1\n"
}

// 无参, 无返回值, 等价于上面
func hello2() -> Void {
    print("hello2")// "hello2\n
}

// 调用函数
hello1()
hello2()



// 有参
// 1, 关于内部参数名
// 2. 只在函数作用域内部使用的参数名
func hello3Name(name: String, name2: String) {
    print("你好\(name) and \(name2)")// "你好李云飞 and 李云龙
}

// 除了第一个参数, 后面的参数在调用的时候会自动生成一个与内部参数名相同的外部参数名
// 原则上, 第一个参数的外部参数名应该写在函数名的末尾
hello3Name("李云飞", name2: "李云龙")






func hello4Name(mingzi1 name:String, mingzi2 name2: String) {
    print("你好\(name) and \(name2)")
}

//hello4Name(mingzi1: <#T##String#>, mingzi2: <#T##String#>)
// 外部参数名的添加规则 在内部参数名前面声明中间使用空格隔开
hello4Name(mingzi1: "李云飞", mingzi2: "李云龙")





// 添加占位符, 去掉自动生成的外部参数名
func hello5 (name : String, _ name2: String) {
    print(name + name2) // 直接拼接
     print("你好\(name) and \(name2)") //
}

//hello5(<#T##name: String##String#>, <#T##name2: String##String#>)
hello5("李云飞", "李云龙")





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


// 调用函数有 两个可选的
//hello6() // 第一种 不用传参
// 第二种 可以只传任意一个参数
//hello6(<#T##name: String##String#>, name2: <#T##String#>)

//hello6()
hello6("仝兴伟") // 把 李云龙 改为 仝兴伟


//hello6(name2: "老仝") // 你好李云飞 and 老仝





//****************有返回值的情况
// 返回值 直接给类型
// 无参有返回值
func byebye1()-> String {
    return "bye"
}

byebye1()




// 写一个函数 传入一个字符串, 返回元音的个数和辅音的个数
func yuanYinCountAndFuYinCount(ziMuString: String) -> (Int, Int) {

    var yuanYinCount = 0 // 元音计数
    var fuYinCount = 0 // 辅音计数
    // 遍历字符
    for tmpStr in ziMuString.characters {
        
        print(tmpStr) // (11 times)
        switch tmpStr {
            case "a", "e", "i", "o" , "u":
            yuanYinCount++
        default:
            fuYinCount++
        }
    }
    // 返回元组
    return(yuanYinCount, fuYinCount) // 返回元音数量, 辅音数量
}


print(yuanYinCountAndFuYinCount("aeidshuflsj")) // 元音四个, 辅音7个




// 不确定参数个数, 传进来n个Int类型的参数 (同一类型)
// 参数个数可变
func count2 (numbers: Int...) -> Int {
    var sum = 0
    
    // 不确定个数的参数作为数组使用
    for num in numbers {
        sum += num;
    }
    return sum
}

count2(1, 3, 5, 2)


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

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






// 用inout修饰参数, 将参数的外部变量的地址传进来从而改变外部变量的值
func changeValue (inout a: Int) {
    a++
    print(a) // "12\n"
}

changeValue(&c) // 传地址过去
c






  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值