swift学习笔记_iOS开发(二)

阅读iBook上的The Swift Programming Language (Swift 2.1) 以及网络上的各种资料进行学习,中英对照可以帮助我们更好的进行理解

 //同时使用if let来防止值的丢失 通过在类型后面一个?来表示它是一个可选值
        var name:String?=nil
        var optionalName:String?="Scott"
        //optionalName=nil
        var greeting="hello"
        if let names=optionalName{
            greeting="hello\(names)"//如果可选值时nil则跳过花括号,反之会将其赋值给let后面的常量,且可以在代码块内部使用
        }
        print(greeting)
        //注:这里不太理解,好像是关于空指针的问题
        
        //另一种方法用来保持变量不丢失 是通过设置一个默认值 然后用双问号??来表示,如果前面是nil则用默认值代替它
        //let nikName:NSString?="Candy"
        let nikName:NSString?=nil
        let fullName="Scott"
        let informalGreeting="Hi \(nikName ?? fullName)"//这个在传值的时候非常方便,省去了判断和赋值的繁琐,交给系统去处理
        print(informalGreeting)
        
        //使用switch和case进行判断 switch支持各种数据类型
        let vegetable="red pepper"
        switch vegetable{
            case "celery":
            print("A")
            case "cucumber","watercress":
            print("B")
        case let x where x.hasSuffix("red pepper"):
            print("C")
            print(x)
        default:
            print("D")
        }//在匹配到case的时候它会自动跳出 不必额外写break
        
        //使用for-in来迭代字典中的元素,关于迭代:递归是重复调用函数自身实现循环。迭代是函数内某段代码实现循环,而迭代与普通循环的区别是:循环代码中参与运算的变量同时是保存结果的变量,当前保存的结果作为下一次循环计算的初始值。
        let interestingNumbers=["prime":[2,3,5,7,11,13],"square":[1,4,9,16,25],"fibonacci":[1,1,2,3,5,8]]
        var largest=0
        for (kinds,numbers)in interestingNumbers{
            for number in numbers{
                if number > largest{
                    largest=number
                    print(largest)
                }
            }
        }
        
        //使用while来重复执行一个代码块 也可以吧while条件放在最后 用来保证至少跑过一次循环
        var n=2
        while n<100{
            n=n*2
        }
        print(n)
        var m=2
        repeat{
        m=m*2
        }
        while m<100
        print(m)
        
        //你可以在一个循环中定义索引 一种方法是:使用 ..< 来定义一个循环的索引的范围;另一种方法是定义初始值,终止值,增量
        var firstLoop=0
        for i in 0..<4{ //使用..<不包含最大边缘值4 使用...则同时包含范围两边的值0,4
            firstLoop += i
        }
        print(firstLoop)
        var secondLoop=0
        for var i=0;i<4;++i{
            secondLoop+=1
        }
        print(secondLoop)
        
        //使用func来声明一个函数 通过函数名和参数列表来执行函数 使用->区别出返回的类型
        func greet(name:String,day:String)->String{
            return "Hello \(name),today is \(day)"
        }
        greet("Bob", day: "Tuesday")
        print(greet("bob", day: "Monday"))
        
        //使用tuple(元组)来返回多个值 tuple的元素可以使名字或数字
        func calculateStatistics(scores:[Int])->(min:Int,max:Int,sum:Int){
            var min=scores[0]
            var max=scores[0]
            var sum=scores[0]
            for score in scores{
                if score > max{
                    max=score
                }
                else if score < min{
                    min=score
                }
                sum+=score
            }
            return (min,max,sum)
        }
        let statistics=calculateStatistics([5,3,100,3,9])
        //print(statistics.max)
        //print(statistics.min)
        print(statistics.sum)
        print(statistics.2)
        
        //其中还有好多不理解的地方,慢慢深入学习,定会拨开云雾见晴天


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值