• swift 笔记2


    swift交流群:342581988,欢迎增加。

    今天真郁闷啊,把mac升级到10.10了。如今好了,曾经的程序都跑不了了。哎,不说了,让我郁闷会再。

    说说条件推断吧,事实上这些基本的语法大家都知道肯定差点儿相同。好吧,我就自己写写看吧。

    上代码

    let individualScores = [78,32,32,53,23]
    var teamScore = 0
    for score in individualScore{
         if score > 50{
            teamScore += 3
         }else{
            teamScore += 1
         }
    }
    teamScore
    
    

    这个事实上和曾经的oc差点儿相同了,我想大家都注意到了。就是这个Swift把曾经用圆弧括号的地方所有去掉,把分号也去掉。大概就是这样子

    在这里。要说说这个if推断语句,这个if后面的条件必须是个Boolean表达式。换句话说,假设上面这样写

    if score{
       ...
    }
    那就是错的了

    由于score是一个非Boolean值,这个在曾经都是会自己主动与0相比較,非零值就会运行if后面语句。

    这个地方if和let能够一起使用。let修饰变量时可选的,能够是一个值。也能够是nil。在类型后面加一个?表示他是可选的。

    let v : int;已分配内存;

    let v : int ? 还没分配内存

    以下if里面用来推断optionName是否存在。

    var optionString:String?

    = "Hello" optionString == nil var optionName: String ?

    = "John Appleseed" var greeting = "Hello!" if let name = optionName{ greeting = "Hello, (name)" }

    假设上面optionName = nil;那么结果将会不一样,会运行你后面else部分。

    以下说说switch吧,这个我也还没搞太懂,所以大家一定要拍砖

    这个switch支持不论什么数据 的比較操作。不不过整形之类的,

    let vegetable  = "red pepper"
    switch vegetable {
         case "celery":
               let vegetableComment = "Add some raisins and make ants on a log."
        case "cucumber","watercress":
              let vegetableComment = "That would make a good team sandwich."
        case let x where x.hasSuffix("pepper"):
              let vegetableComment = "Is it a spicy (x)?"
        default:
              let vegetableComment = "Everything tastes good in soup."
     
    
    }

    这个地方后面的default是不能少的,不然就会报错,只是这个地方有点变化的是,break不见了。对的。break不要了。

    再说说for-in迭代循环吧

    let interestingNumbers = [
        "Prime": [2, 3, 5, 7, 11, 13],
        "Fibonacci": [1, 1, 2, 3, 5, 8],
        "Square": [1, 4, 9, 16, 25],
    ]
    var largest = 0
    for (kind, numbers) in interestingNumbers {
        for number in numbers {
            if number > largest {
                largest = number
            }
        }
    }
    largest

    事实上这个没什么可说的了,看看即可了,

    然后在看看while和do...while吧

    var n = 2;
    while n < 100{
          n = n * 2
    }
    n
    
    var m = 2
    do{
          m = m * 2
    }while m < 100
    m

    注意确保循环进行至少一次


    好吧,再写最后一个,应该算是一种新的写法吧

    var firstForLoop = 0
    for i in 0..3{
        firstForLoop += i
    }
    firstForLoop
    
    var secondForLoop = 0
    for var i = 0;i < 3; ++i{
          secondForLoop += 1
    }
    secondForLoop
    
    

    ..代表值递增。貌似包含端点值。


    好吧,今天就写这点吧,感觉好慢啊,以后不能这样写了。必须 加速了,捡重点写点吧。










  • 相关阅读:
    树形地铁系统[树的最小表示]
    156. 矩阵[二维的hash]
    兔子与兔子
    滑动窗口【单调队列入门题】
    【YBTOJ】生日相同
    【YBTOJ】移位包含
    【YBTOJ】【HDUOJ 3085】逃离噩梦
    【YBTOJ】立体推箱子
    【CodeForces 1408F】Two Different
    【Luogu P3338】[ZJOI2014]力
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5112570.html
Copyright © 2020-2023  润新知