Swift_基础x.x

Day_2

刚刚写了好久的没保存。。
更坑的事Swift2好像改了函数!找了半天
代码可以直接在playground执行
因为看的书上用的是Swift1.1版本,于是在iBook上下载了Swift2.1的版本对照着学习的,所以代码是最新的2.1版,XCode6.0不支持

String

  1. 注意!Swift代码已改,原来1.0版 1.1版会报错

    import Foundation
    let string = "Hello Boy"
    let string1 = "nice to meet you!"
    if string.hasPrefix("H") //判断前缀
    {   print("前缀是H")  }
    
    if string.hasSuffix("Boy")//判断后缀
    {print("后缀是Boy")}
    
    print(string.uppercaseString) //转换为大写
    print(string.lowercaseString) //转换为小写
    
    //countElements已改为count
    print(string.characters.count) //输出
    //遍历以改
    for c in string.characters
    {
    print(c)
    }
    
    //String可以使用 + 号和 += 连接字符串
    string = string + " " + string1
    string += string1
    
  2. The Swift Programming Language

    “Swift strings cannot be indexed by integer values.”

    摘录来自: Apple Inc. “The Swift Programming Language (Swift 2.1)”。 iBooks.
    https://itun.es/cn/jEUH0.l

    Swift不允许使用string[index] index为整数的方式来访问,使用案例

    let greeting = "Guten Tag!"
    greeting[greeting.startIndex]   // G
    //end是指字符串中最后一个字符的后一位,并不是指最后一个字符
    //相当于c语言的结束字符
    //predecessor前一个
    //successor 后一个
    greeting[greeting.endIndex.predecessor()]   // !
    greeting[greeting.startIndex.successor()]    // u
    
    let index = greeting.startIndex.advancedBy(7)
    greeting[index]   // a

数组

  1. 基础

    //声明数组的方法 
    var a:[Int] = [1, 2, 3]
    var b = [1, 2, 3]
    var c:[Int] = [1, 2, 4]
    var d = [Double](count: 5, repeatedValue: 0.1)
    
    var a1 : AnyObject = a
    var c1 : AnyObject = c
    var b1 : AnyObject = b
    
    print(b.count) // 长度   3
    print(a.isEmpty) //  是否为空  false
    
    //判断恒等
    //在判断恒等与不恒等的情况下必须转化为AnyObject才能进行比较
    if a1 === c1
    {print("a与c恒等")}
    else
    {print("a与c不恒等")}
    
    //判断共有元素
    if (a1 !== c1)
    {print("有共用元素")}
    else
    {print("无共用元素")}
    
    //数组的copy函数同样可以用来初始化,同样a1也必须是AnyObject类型
    var a2 = a1.copy()
  2. 添加删除

    var array = ["A", "C", "D"]
    //数组通过此方式可以在末尾添加元素
    array += ["E"]
    
    //使用数组的append方法可以在末位添加元素
    array.append("F")
    
    //在指定的位置index添加指定元素
    array.insert("B", atIndex: 1)
    
    //批量修改,使用到[x...y]的使用
    //这里的使用非常灵活,也可以只写两个,也可以写空,
    //后面的元素自动补齐
    array[1...3] = ["J", "K", "L"]
    
    //移除最后一个元素
    array.removeLast()
    
    //移除第一个元素
    array.removeFirst()
    
    //移除指定位置的元素
    array.removeAtIndex(2)
    
    //移除所有元素  keepCapacity为可选形参 默认值为false
    //默认值为false指元素从数组中删除同时也从内存中删除
    //当设置为true时指元素从数组中删除但是不从内存中删除
    array.removeAll(keepCapacity: false)
    
    
    
  3. 遍历数组

    var array1 = [1, 2, 3, 4, 5]
    for item in array1
    {
    print(item)
    }
    for (index, value) in EnumerateSequence(array1)
    {
    print("索引 \(index) 值 : \(value)")
    }

集合Set

这篇内容书上没有,全部是从英文版的书里面来的。(书简直太坑了,这么重要的数据结构都没有!)

“A set stores distinct values of the same type in a collection with no
defined ordering. You can use a set instead of an array when the order
of items is not important, or when you need to ensure that an item
only appears once.”

摘录来自: Apple Inc. “The Swift Programming Language (Swift 2.1)”。 iBooks.
https://itun.es/cn/jEUH0.l

上面的英文理解起来不难,像C++ 里面的 STL 一样,集合Set里面的元素只出现一次

  1. 初始化

    var letters = Set<Character>()
    print("letters is of type Set<Character> with \(letters.count) items.")
    
    var favoriteGenres: Set<String> = ["Rock", "Classical", "Hip hop"]
    var favoriteGenres: Set = ["Rock", "Classical", "Hip hop"]
  2. 操作

    var favoriteGenres: Set = ["Rock", "Classical", "Hip hop"]
    print("I have \(favoriteGenres.count) favorite music genres.")  //元素总和
    
    if favoriteGenres.isEmpty //判空
    {
        print("As far as music goes, I'm not picky.")
    } else {
        print("I have particular music preferences.")
    }
    
    favoriteGenres.insert("Jazz") //插入
    
    if let removedGenre = favoriteGenres.remove("Rock") //移除
    {
        print("\(removedGenre)? I'm over it.")
    }
    else
    {
        print("I never much cared for that.")
    }
    
    if favoriteGenres.contains("Funk")  //是否包含
    {
        print("I get up on the good foot.")
    }
    else
    {
        print("It's too funky in here.")
    }   
    
    for genre in favoriteGenres.sort(>) //遍历
    {
        print("\(genre)")
    }
  3. 集合的交并补

    let oddDigits: Set = [1, 3, 5, 7, 9]
    let evenDigits: Set = [0, 2, 4, 6, 8]
    let singleDigitPrimeNumbers: Set = [2, 3, 5, 7]
    
    oddDigits.union(evenDigits).sort()
    // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] -->a 和 b 的全部
    
    oddDigits.intersect(evenDigits).sort()
    // []  -->a 和 b 的相同部分
    
    oddDigits.subtract(singleDigitPrimeNumbers).sort()
    // [1, 9]   --> a 中无 b 的部分
    
    oddDigits.exclusiveOr(singleDigitPrimeNumbers).sort()
    // [1, 2, 9]    --> a 和 b 的全部除掉 a 和 b 的相同部分

    简单的解释图片

  4. 集合的相等 包含等判断

    let houseAnimals: Set = ["狗", "猫"]
    let farmAnimals: Set = ["牛", "鸡", "羊", "狗", "猫"]
    let cityAnimals: Set = ["鸟", "鼠"]
    
    houseAnimals.isSubsetOf(farmAnimals) //子集
    // true
    farmAnimals.isSupersetOf(houseAnimals) //父集
    // true
    farmAnimals.isDisjointWith(cityAnimals) //无相同元素
    // true

字典

字典存储的元素包含一个键合一个值,其中值和键相对应, 在Swift中,对于一个特定的字典,它所能存储的键和值都是确定的

  1. 初始化

    var namesOfIntegers = [Int: String]()
    var dic = [1 : "a", 2 : "b", 3 : "c"]
  2. 操作

    var dic = [1 : "a", 2 : "b", 3 : "c"]
    print(dic.count) // 数量
    
    print(dic[2]) //Optional("b")
    
    //可以直接用key添加
    dic[4] = "d"
    print(dic)
    
    //修改键的值
    //可以使用key修改
    dic[4] = "hha"
    //用函数updateValue() 返回被修改之前的值 b
    //如果对应的key不存在,就创建一个对应的组合
    dic.updateValue("a haha", forKey: 2)
    
    //三种删除方法
    dic[2] = nil
    dic.removeValueForKey(1)
    dic.removeAll() //含可选参数 keepCapacity 用法与数组相同
  3. 遍历

    //遍历 四种方式
    for value in dic.values
    {
    print(value)
    }
    
    for key in dic.keys
    {
    print(key)
    }
    
    for (key, value) in dic
    {
    print(key, value)
    }
    
    for dict in dic
    {
    print(dict)
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值