美文网首页
swift学习之基础语法一

swift学习之基础语法一

作者: 天蚕 | 来源:发表于2016-02-26 17:41 被阅读102次

    log打印

    print("字符串")
    let name = "字符串"
    print(name)
    print(name + name)
    print(name + "字符串")
    

    字符串

    1、swift的字符串是结构体类型的

    1、字符串的创建

    数组

    1、swift数组通过var/let区别数组是否为可变数组
    2、数组元素类型同样必须一致
    3、swift数组的空间不足,会直接*2就像OC的 arrayWithCapacity,减少分配空间的次数,提高一点性能
    4、swift数组可以用+=或者直接拼接两个数组得到一个新数组,但是参加运算的两个数组必须是同一类型

    1、数组创建

    //构造函数创建空数组
    var array2 = [Int]()//等价于var array1:[Int] = []
    var array4 = Array<Int>()//等价于var array3:Array<Int> = []
    

    2、数组增删改查

    1)增append
    var arr1 = [1,2,3]
    var arr2 = [4,5,6]
    arr1.append(4)
    //此时的arr1 = [1,2,3,4]
    var arr3 = arr1 + arr2
    //此时的arr3 = [1,2,3,4,5,6]
    arr1.append(contentsOf: arr2)
    //此时的arr1 = [1,2,3,4,5,6]
    
    2)删remove
    arr1.remove(at: 0)
    //此时的arr1 = [2,3,4,5,6]
    arr1.removeLast(2)
    //此时的arr1 = [2,3,4]
    arr1.removeFirst(2)
    //此时的arr1 = [4]
    arr1.removeFirst(2)
    //arr1.removeAll()
    //此时的arr1 = [],且删除分配的空间
    arr2.removeAll(keepingCapacity: true)
    //此时的arr1 = [],且保留分配的空间
    arr3.removeSubrange(0..<2)
    //此时的arr3 = [3,4,5,6]
    arr3.removeSubrange(0...2)
    //此时的arr3 = [6]
    3)改直接用下标改
    arr3[0] = 8
    //此时的arr3 = [8]
    4)查index下标
    var arr1 = [1,2,3,4,5,6]
    arr1[0]//1
    arr1[0..<2]//[1,2]
    

    3、 遍历

    字典

    1、swift字典通过var/let区别字典是否为可变字典,且key唯一
    2、swift字典的key要求可哈希的hashable,为了便于方便查找
    hash:是指将key(字符串)转换成一个唯一的整数然后在查找的时候就可以直接找到,不需要遍历整个集合的key,提高集合的查找效率
    3、swift字典同样通过keyvalue,如果key存在修改,key不存在新增

    1、字典创建

    var dict = Dictionary<String,Int>()
    var dict1:[String:Int]?
    var dict2:[String:Int] = [:]
    

    2、字典增删改查

    3、字典遍历

    控制流

    1、if语句

    1)if语句的()可以省略{}绝对不能省略
    2)if的条件只能是bool不存在非0即真的逻辑
    3)if...else...在oc中用三目运算,而在swift中则使用
    (条件) ? a语句 : b语句 (oc)
    条件 ?? 默认值 (swift如果条件成立则表达式的值为条件表达式的结果,否则表达式的值就是默认值)

    2、for循环

    1)废弃传统的for循环,因为swift3.0废除了 ++

    //正常序列
    for i in 0 ... 8
    {
    
    }
    
    //反转序列
    for i in (0...8).reversed() {
    
    }
    
    //输出10 9 8 7 6 5 4 3 2 1
    for i in stride(from: 10, to: 0, by: -1)
    {
        print(i)
    }
    
    //输出0 1 2 3 4 5 6 7 8 9 10
    for i in stride(from: 0, through: 10, by: 1)
    {
        print(i);
    }
    

    3、switch

    1)switch后的()和每一个case{}可以省略,最外围的{}不能省略
    2)switch默认是不穿透的,而oc中默认穿透的需要用break阻止穿透,如果需要穿透fallthrough,case没有任何语句才需要使用break
    3)switch在oc中每一个case必须使用{}来保证作用域,swift中则不需要
    4)switch在swift中必须覆盖所有情况,如果case不能覆盖到全局,就必须使用default补全,oc中则不需要覆盖所有情况
    5)switch在swift中如果存default必须在其他所有case之后,就是必须写在最后面,oc中default没有位置约束
    6)let case (t1,t2)

    4、while

    while循环与oc的区别就在于do{...}while变成了repeat{...}while

    注释

    //MARK:小段落注释 //MARK:- 大段落注视 // FIXME:需要修改 // TODO:需要实现

    对象和结构体

    Swift并不会为class自动生成默认的init方法。如果我们不定义它,Swift编译器会报错。因此,无论多么简单的class,我们至少要为它定义一个初始化其所有属性的init方法。虽然有时候这样做很无聊,但是我们没有其它的选择。因为class并不简单表达一个“值”的概念。Swift要求我们明确通过init方法说明“打造”一个对象的过程。相反,struct表达一个自定义的“值”,在没有特别说明的情况下,一个值的初始化当然是把它的每一个member都按顺序初始化。

    相关文章

      网友评论

          本文标题:swift学习之基础语法一

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