zoukankan      html  css  js  c++  java
  • 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
    
    

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


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










  • 相关阅读:
    .net core读取appsettings.config中文乱码问题
    vs2017错误:当前页面的脚本发生错误
    VS Code中无法识别npm命令
    Visual Studio报错/plugin.vs.js,行:1074,错误:缺少标识符、字符串或数字
    记录一次在生成数据库服务器上出现The timeout period elapsed prior to completion of the operation or the server is not responding.和Exception has been thrown by the target of an invocation的解决办法
    Java集合框架
    java hash表
    Java Dictionary 类存储键值
    java数据结构 栈stack
    java封装
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5112570.html
Copyright © 2011-2022 走看看