美文网首页
Swift4 基础部分:Collection Types

Swift4 基础部分:Collection Types

作者: Arnold134777 | 来源:发表于2017-07-16 15:24 被阅读104次

    本文是学习《The Swift Programming Language》整理的相关随笔,基本的语法不作介绍,主要介绍Swift中的一些特性或者与OC差异点。

    系列文章:

    Generic Collections

    Swift’s array, set, and dictionary types are implemented 
    as generic collections. For more on generic types and 
    collections, see Generics.
    
    • Swift中集合的实现都使用到泛型的概念。

    Mutability of Collections

    If you create an array, a set, or a dictionary, and assign 
    it to a variable, the collection that is created will be 
    mutable. This means that you can change (or mutate) the 
    collection after it is created by adding, removing, or changing items in the collection. If you assign an array, 
    a set, or a dictionary to a constant, that collection is 
    immutable, and its size and contents cannot be changed. 
    
    • Swift中集合用let修饰的就是不可变集合,var修饰的就是可变集合。

    例子:

    let threeDoubles = Array(repeatElement(0.0, count: 3));
    threeDoubles.append(1.0);
    

    编译失败:

    MyPlayground.playground:146:1: note: change 'let' to 'var' 
    to make it mutable
    let threeDoubles = Array(repeatElement(0.0, count: 3));
    ^~~
    var
    

    Arrays

    Array Type Shorthand Syntax

    The type of a Swift array is written in full as 
    Array<Element>, where Element is the type of values the 
    array is allowed to store. You can also write the type of 
    an array in shorthand form as [Element]. Although the two 
    forms are functionally identical, the shorthand form is 
    preferred and is used throughout this guide when referring 
    to the type of an array.
    
    • Swift集合数组的存在两种方式的写法,推荐使用[Element]的方式。

    例子:

    var someInts = [Int]();
    print("someInts \(someInts.count)");
    
    var otherSomeInts = Array<Int>();
    print("someInts \(otherSomeInts.count)");
    

    Iterating Over an Array

    以下两种方式都可以使用,特别说明第二种每次遍历拿到的是一个元组(index,value)。

    例子:

    var colors = ["red","green","yellow"];
    for color in colors{
        print("color:\(color)");
    }
    
    for (index,color) in colors.enumerated(){
        print("index:\(index),color:\(color)");
    }
    

    执行结果:

    color:red
    color:green
    color:yellow
    index:0,color:red
    index:1,color:green
    index:2,color:yellow
    

    Sets

    Hash Values for Set Types

    A type must be hashable in order to be stored in a set—
    that is, the type must provide a way to compute a hash 
    value for itself. A hash value is an Int value that is the 
    same for all objects that compare equally, such that if a 
    == b, it follows that a.hashValue == b.hashValue.
    
    • Swift中的Sets设计与OC中都一样需要通过hash值来与其他的存储数据进行比较。

    Dictionaries

    Creating a Dictionary with a Dictionary Literal

    A key-value pair is a combination of a key and a value. In 
    a dictionary literal, the key and value in each key-value 
    pair are separated by a colon. The key-value pairs are 
    written as a list, separated by commas, surrounded by a 
    pair of square brackets:
    
     [key 1: value 1, key 2: value 2, key 3: value 3]
    
    • 与OC中字典的赋值存在不同格式,只是搞不懂通用的{}为什么Swift中不采用,而是使用[](OC,js中都是{}的设计)。

    相关文章

      网友评论

          本文标题:Swift4 基础部分:Collection Types

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