美文网首页
重新拾起Swift第一天

重新拾起Swift第一天

作者: 爆炸的白菜君 | 来源:发表于2017-04-10 21:06 被阅读11次

    let声明常亮
    var声明变量
    有自动推断的功能,也可以指明数据类型

    let explicitDouble: Double = 70
    
    

    任何类型的数据不会被隐式转换成其他类型的数据,就像这里的width,不会像JS直接回转成String,

    let label = "The width is"
    let width = 94
    let widthLabel = label + width
    

    error: binary operator '+' cannot be applied to operands of type 'String' and 'Int'

    正确的做法

    let label = "The width is"
    let width = 94
    let widthLabel = label + String(width)
    
    

    字符串的快捷转换符号‘()’

    let time:Float = 8
    
    let hello = "Good morning ! Time is AM \(time)"
    

    数组字典的初始化

    //数组
    
    var animals = ["pig","dog","cat","rubbit"]
    let pig = animals[0];
    
    
    //字典
    var dictionary = [
        "xiaoming" : "10",
        "xiaohong" : "12"
    ];
    
    var xiaoming = dictionary["xiaoming"]
    

    空数组,空字典的创建,一定要指定数据类型

    //空数组,空字典初始化
    var arr = [String]();
    var dic = [String:Float]();
    

    也可以自动推理出数据类型,因为上面的代码已经指明了animals和dictionary的数据类型了

    //如果可以推断出来
    animals = []
    dictionary = [:]
    

    可选数据类型 if let optional = value {
    }
    如果value不为nil
    可选数据的定义以及初始化

    var optional:String?
    var optional1:String? = “abc”
    

    总结:
    Swift中的数据只要被定义出来就要给一个数据类型(Int,String, Float)不必给一个确切的值,在使用这个数据的时候就必须要有值,或者是可选类型(可为nil)例如

    var abc         //是错的
    var cde:Int     //是对的
    
    
    var abc:Int
    print(abc)      //是错的
    
    var abc:Int?
    print(abc)      //是对的
    
    var abc = 10    //自动推导abc是Int型数据
    print(abc)      //是对的
    

    可选值的默认值 使用 ?? 连接,如果可选类型的数据为nil。

    let myName:Int? = nil
    let moren:String = "abc"
    print(myName ?? moren)
    

    Switch语句
    Swift中Switch语句可以判断的值可以是任意类型,每个case结束也不必加上break,Switch必须完整,default不能缺省

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

    遍历字典,使用 for in 语句。

    var largest:Int?
    var largestKind:String?
    
    for (kind, numbers) in interestingNumbers {
        for number in numbers {
            if number > largest ?? 0 {
                largest = number;
                largestKind = kind;
            }
        }
    }
    
    print(largest!)
    print(largestKind!)
    

    while语句的使用

    var total:Int = 1
    while total < 100 {
        total = total + total;
    }
    total
    
    var total2:Int = 100
    repeat{
        total2 = total2 + total2;
    }while total2 < 100
    total2
    

    for循环的使用, ..< 包含左不包含右 …包含左包含右

    var total3:Int = 1;
    for i in 1..<5 {
        total3 = i;
    }
    

    函数和闭包
    使用func来声明一个函数
    ->表示返回值类型

    func greetFun(person:String, day:String) -> String{
        return "Good Morning \(person), today is \(day)";
    }
    
    greetFun(person: "xiaoming", day: "Monday")
    

    使用参数标识替换原有参数, _是在参数可以省略的情况下使用, on就替换原来的参数

    func greetFun2(_ person:String, on day:String) -> String{
        return "Good Morning \(person), today is \(day)"
    }
    
    greetFun2("xiaoming", on: "Monday")
    

    返回多个参数的函数,返回元祖类型的数据,元祖类型的数据可以使用()包起来,使用的时候可以使用变量的名称,或者脚标来直接获取

    func toolFunc(Arr:[Int]) -> (sum:Int, max:Int, min:Int){
    
        var max = Arr[0];
        var min = Arr[0];
        var sum = 0;
        
        for num in Arr {
            if num > max {
                max = num;
            }
            if num < min {
                min = num;
            }
            sum += num;
        }
        
        return (sum, max, min)
    }
    
    var result = toolFunc(Arr: [12, 32, 1, 21, 43, 21, 54])
    result.sum
    result.max
    result.min
    result.0
    

    在Swift中参数个数可以不固定

    func sumFunc(numbers:Int...) -> Int{
        var sum = 0;
        for number in numbers{
            sum += number;
        }
        return sum;
    }
    
    var sum = sumFunc(numbers: 1,4,3,5,7)
    

    函数可以嵌套使用,内部函数可以是用外部函数里的局部变量,但是外部函数不能使用内部函数里的句不变量

    func returnFifteen() -> Int{
        var y = 10;
        func add() -> Int{
            y += 5;
            return y
        }
        add()
        return y;
    }
    
    returnFifteen()
    

    相关文章

      网友评论

          本文标题:重新拾起Swift第一天

          本文链接:https://www.haomeiwen.com/subject/tueeattx.html