美文网首页
波哥Swift学习8.30~9.4学习总结

波哥Swift学习8.30~9.4学习总结

作者: Bryant_2423 | 来源:发表于2017-09-07 21:36 被阅读0次

    对于我来说,Swift已经不是一门陌生的语言了,不过这几天听波哥讲Swift4.0,又对Swift这门语言有了进一步的了解。


    本次内容有:

    • 元的操作符进一步理解与代码规范 ✅
    • 字符与字符串在Swift4.0中的新特性
    • 字符串索引
    • 数组的高阶操作(闭包+函数式编程)✅
    • Set类型的更多操作与方法

    元的操作符进一步理解与代码规范

    元的操作符:操作几个对象就叫几元操作符 比如:

    let b = 1
    let a = b
    

    上面的=就是一个操作符,它操作了ab两个对象,所以=二元操作符 再比如:

    -b
    

    代码中的-就是一个操作符,它只对b一个对象进行了操作(取它的相反数)所以-一元操作符
    代码规范:二元操作符操作2个目标,在2个目标之间,前后用空格分隔.比如:3 + 4 ;+操作了3和4两个对象,所以用空格分开。


    字符与字符串在Swift4.0中的新特性

    字符与字符串在Swift4.0中的新特性有一下2点:

    • 支持多行字符串(对前端开发效率大大提高)
      多行字符串:使用"""输入你要的多行字符串""" 使用一组三个"来创建。举个例子:
    let poem = """
    浩荡离愁白日斜,
    吟鞭东指即天涯。
    落红不是无情物,
    化作春泥更护花。
    """
    print(poem)
    

    在Xcode9中看看输出结果。自动加了换行。

    • 计算字符串字符总数方法简化
      在Swift3.0中,对字符串计数是这样的:
      poem.characters.count
      在Swift4.0中,是这样的:
      poem.count

    字符串索引

    字符串索引并不常用,为了更熟悉Swift语言,决定还是谢了,使用代码块的形式来呈现。

    let poem = """
    浩荡离愁白日斜,
    吟鞭东指即天涯。
    落红不是无情物,
    化作春泥更护花。
    """
    //取出字符串的第1个索引
    poem.starIndex
    
    //取出字符串最后一个索引
    poem.endIndex
    
    //通过下标访问字符串的字符
    poem[poem.startIndex]
    
    //用字符串的index(after:)或index(before)引用后一个或前一个索引
    poem[poem.index(before: poem.endIndex)]
    
    //用字符串的index(_:offsetBy:)方法向前进位
    poem[poem.index(poem.startIndex, offsetBy: 3)] //前进3位
    poem[poem.index(poem.endIndex, offsetBy: -3)] //后退3位
    
    

    对于字符串索引有一点需要注意:字符串的endIndex不是该字符串的最后一个字符!** 比如上述代码poem,它的endIndex不是“。” “。”是endIndex的前一位。


    数组的高阶操作(闭包+函数式编程)

    这次学了两个高阶操作:

    • 高阶操作①: 求和,连接元素, reduce
      举个例子:
    //连接元素
    let str1 = ["A","P","P","L","E"]
    let title = str1.reduce("I love") {
        $0 + "," + $1
    }
    
    //求和
    let number1 = [1,3,5,7,9]
    let total = number1.reduce(0) {
        $0 + $1
    }
    

    上面的是闭包表达式,下一章会提到reduce后面()中的是初始值,其实reduce就是一个循环,也可以用普通代码写出来,以第二个求和闭包为例:

    let number = [1,3,5,7]
    func reduce(array:[Int], initValue:Int) -> Int{
        var total = initValue
        
        for i in 0..<array.count {
            total += array[i]
        }
        
        return total
    }
    
    reduce(array: number, initValue: 0)
    
    • 高阶操作②: 变形 map
      举个例子,把一个Int类型的数组转化为String类型的数组:
    let number = [1,2,3,4,5,6,7]
    //“->”后面表示你要转化的类型
    let intToStr = number.map { (number) -> String in
        return "\(number)"
    }
    

    该方法同样可以使用函数实现(也是个循环)

    func mapIntToStr(array:[Int]) -> [String]{
        var answer = [String]()
        var value = ""
        
        for i in array {
            value = String(i)
            answer.append(value)
        }
        
        return answer
    }
    
    let numbers = [1,3,5,7]
    let intToStr = mapIntToStr(array: numbers)
    
    

    只不过用闭包表达式写简洁了许多!


    Set类型的更多操作与方法

    • ①元素数: count, 空否: isEmpty
    let s: Set = [1,4,5,6]
    //计数
    s.count
    
    //空否
    s.isEmpty
    
    • ②插入:insert, 移除:remove
    //插入
    s.insert(2)
    
    //移除
    s.remove(2)
    
    • ③是否包含某元素:contains 🔝常用
    s.contains(5)
    

    交集 intersection

    let s2: Set = [1,4,9,0]
    s.intersection(s2)
    

    补集 symmetricDifference

    s.symmetricDifference(s2)
    

    其实,Swift的语法十分灵活,上面这些点语法在字符串,数组等情况下都可以通用!

    相关文章

      网友评论

          本文标题:波哥Swift学习8.30~9.4学习总结

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