1. 在 Swift 中,如果你用let将数组作为常量来定义,他们就是不可变的,如果用 var 定义为变量他们就是可变的。

作为对比,Foundation 框架中的 NSArray 默认是不可变类型,如果你想在数组创建之后添加、删除或者修改数据,你必须使用可变类 NSMuatbleArray。

2. NSArray 是异质的,那也就意味着他可以包含不同类型的 Cocoa 对象。 Swift 数组是同质的,意味着每一个 Swift 数组都只包含一种类型的对象。

不过,你仍然可以通过将一个类型定义为 AnyObject 类型,使定义的 Swift 数组能够存储可变的 Cocoa 对象类型。

/********************************数 组************************************/

//------------------------------------------------------------------------------

// 1. 数组定义

// 初始化一个空数组

var someArray = [String]()

print("数组---\(someArray)")

// 1> 使用[]可以快速定义数组,每一个数组元素使用 , 分隔

// 2> 数组中的数据元素可以是不同类型

var myArray = ["string1","string2",1,1.2,true,1] as [Any]

//------------------------------------------------------------------------------

// 2. 如果要让数组中存放的数据是同一种数据类型,可以在定义数组时指定其中的数据类型,代码如下:

// 1> array1是一个仅允许存放String的数组

var stringArray:[String]

stringArray = ["str1","str2"]

// 2> array2是一个仅允许存放Int的数组

var intArray:[Int]

intArray = [1,2,3,4,5]

for item in intArray {

print("item---\(item)")

}

print("item---\(intArray[0])")

// 3. 使用泛型创建数组

// 使用泛型定义数组时 <> 中的类型可以指定数组中存放的数据类型

//

// 1> array3是一个仅允许存放AnyObject(Int等)的数组,()会实例化数组

var idArray = Array<Any>()

idArray = ["stringObject",5,6.6]

print(idArray)

// 2> 在实例化数组时,可以使用数组的构造方法,指定数组初始成员

// 实例化一个数组,包含三个 20 的整数

var triArray = Array<Int>(repeating: 20,count:3)

var squaerArray = Array<String>(repeating: "方形",count:4)

//------------------------------------------------------------------------------

// 4. 数组常见操作

// 1> 追加元素

triArray.append(21)

// 2> 插入元素

triArray.insert(19, at: 0)

triArray.insert(10, at: 3)

// 3> 删除指定位置元素

triArray.remove(at: 2)

triArray

// 使用变量记录triArray数组,本质上做了一次内存拷贝,后续对数组的修改,不会影响该变量数组中的内容

var  copyTriArray = triArray

var aaa = copyTriArray[3]

var bbb = 100

var c = bbb+aaa

// 4> 删除末尾元素

triArray.removeLast()

triArray

copyTriArray

// 5> 删除所有元素,但保留存储空间

//triArray.removeAll(keepCapacity: true)

// 显示resultNums中的内容,数组中的内容并没有受到影响

copyTriArray

triArray

// 6> 数组合并

// 保存相同数据类型的数组,可以使用 + 直接合并

var mergeArray = triArray + copyTriArray

// 7>如果我们同时需要每个数据项的值和索引值,可以使用 String 的 enumerate() 方法来进行数组遍历。实例如下:

var someStrs = [String]()

someStrs.append("Apple")

someStrs.append("Amazon")

someStrs.append("FaceBook")

someStrs += ["Google"]

for (index, item) in someStrs.enumerated() {

print("在 index = \(index) 位置上的值为 \(item)")

}

swift_007(Swift的Array 数组)相关推荐

  1. 在Swift中向数组添加元素

    本文翻译自:Add an element to an array in Swift Suppose I have an array, for example: 假设我有一个数组,例如: var myA ...

  2. 解决关于swift的Array repeating 初始化多个对象问题

    关于swift的Array repeating 初始化多个对象问题 Array repeating的使用 Array repeating的替代方案 1. 使用 Range 和 map 2. 使用 Ra ...

  3. JavaScript引用类型之Array数组之强大的splice()方法

    splice()方法可以说是Array数组最强大的方法,他的用法很多,主要用法是向数组的中部插入项! 下面是它的用法: arrayObject.splice(index,howmany,element ...

  4. 列表(list)、元组(tuple)、字典(dictionary)、array(数组)-numpy、DataFrame-pandas 、集合(set)...

    一.列表(list) 一组有序项目的集合.可变的数据类型[可进行增删改查] 列表是以方括号"[]"包围的数据集合,不同成员以","分隔. 列表中可以包含任何数据 ...

  5. Swift 字典转数组

    Swift 字典转数组 1.Swift 类型的字典(Dictionary) let dic = ["name":"Tom","gender" ...

  6. php手册数组函数,PHP - Manual手册 - 函数参考 - Array 数组函数 - array_diff计算数组的差集...

    PHP - Manual手册 - 函数参考 - Array 数组函数 - array_diff计算数组的差集 array_diff (PHP 4 >= 4.0.1, PHP 5) array_d ...

  7. Js Array数组ES5/ES6常用方法

    Js Array数组ES5/ES6常用方法 1.栈方法(先进后出) push():在数组的最后一项后追加值(参数:可以为多个值或数组) 返回:数组的长度,改变了原数组. var a=[1,2,3] a ...

  8. Java中Arrays.toString ()打印二维数组及Array数组的常用操作

    1.Java中Arrays.toString () 已知打印一维数组的API为System.out.println ( Arrays.toString ();,其参数为数组名或数组指针,其支持的数据类 ...

  9. doctrine find的对象转换成数组_「ES6基础」Array数组的新方法(上)

    在日常工作中我们经常会与数组打交道,因此需要熟练掌握数组操作的相关方法,ES6中关于数组的操作,又给我们带来了哪些惊喜呢,Array数组操作又添加了哪些新方法? 本篇文章将从以下几个方面进行介绍: A ...

最新文章

  1. linux远程开机windows,从Linux到Windows的PowerShell远程处理
  2. redistemplate 设置永不过期_密码已过期 拒绝访问如何处理?
  3. 1、以太网基础知识——概念模型
  4. g标签 怎么设置svg_SVG(可缩放矢量图形)图片添加、高斯模糊、渐变与g标签
  5. 【存储知识学习】第十章- NAS和SAN《大话存储》阅读笔记
  6. SDOI2010 地精部落
  7. Linux bc 命令简单学习
  8. 合并排序算法排序过程_合并排序| 用于大型输入的最佳排序算法之一
  9. 对称加密算法原理与常用实现
  10. 【转】Apache Solr 访问权限控制
  11. python中tolist_python 列表,数组,矩阵两两转换tolist()的实例
  12. Java中包、导包、修饰符和内部类
  13. 中文分词:采用二元词图以及viterbi算法(一)
  14. 如何使用计算机勾绘汇水面积,水文计算算例
  15. 动易模板制作示例(一)
  16. 关于双非本科2020秋招,我想说的
  17. xmind 8系列便携版:关联.xmind文件的打开方式后,打开文件会在当前文件夹下产生configuration等子目录的问题解决办法
  18. 《python从入门到项目实践》第六章 列表和元组 //有一个课后答案
  19. ARFoundation☀️ 八、SARF:ARFoundation可视化插件
  20. VS 2012 显示Link的参数

热门文章

  1. 裸辞后,从Android转战Web前端的学习以及求职之路
  2. 为什么要学网络营销?
  3. Sync 攻击原理及防范技术
  4. linux 下 php 安装 Gearman
  5. ZeroClipboard跨浏览器复制粘贴
  6. JS数组键值,数组合并,
  7. Android 框架炼成 教你怎样写组件间通信框架EventBus
  8. iPad随想:苹果的妙招、谷歌的尴尬和中移动MM的局限
  9. WSDL文件简介(附例子)
  10. .NET 不规则、可改变大小、边框半透明窗体设计