Swift4.0 Array详解
数组的介绍
数组(Array)是一串有序的由相同类型元素构成的集合,数组中的集合元素是有序的,可以重复出现。在Swift中数组类型是Array,是一个泛型集合。数组分成:可变数组和不可变数组,分别使用let修饰的数组是不可变数组,使用var修饰的数组是可变数组。
数组的初始化
一、初始化一个空数组(类型:[数据类型]())
1、创建一个整形的空数组
let array = [Int] ()
这里array 数组变量 被let 修辞 ,array数组是不可变数组,只能访问,不能修改
var array = [Int] ()
这里array 数组变量 被var 修辞 ,array数组是可变数组,可以动态修改
2、创建任意可存储任意类型的数组 [Any] ()
数组的使用
//创建一个可变数组(可存储任意类型的数据)
var arr:Array = [Any]()
//创建一个可变数组 (存储字符串类型)
// var arr1:[String] = [String]() // 1 向数组添加元素 appped()函数 //1.1向数组添加一个元素
arr.append("xiaoming")
print("arr == \(arr)")
arr.append()
print("arr = \(arr)"); //1.2向数组添加一个数组
let addArr:Array = [,,"tianjia"] as [Any]
arr.append(addArr)
print("addArr = \(arr)") //1.3使用加法赋值运算符(+=)也可以直接在数组后面添加元素但添加的元素必须是数组形式的 使用+=操作符时,右边的必须为数组,即使只有一个元素时也要为数组,还有就是通过这种方式你可以一次性给数组增加多个值
let addArr1 = [,] as [Any]
arr += addArr1
print("arr = \(arr)") //1.4向数组插入元素
arr.insert("插入的元素", at: ) //2.移除数组里的元素
//2.1移除特定的元素
arr.remove(at: )
print("removeArr = \(arr)")
//2.2移除数组所有元素
arr.removeAll()
// removeAll方法接受一个参数,允许清空数组时是否保持数组的容量,该参数默认值为false,即将数组的capacity容量设置为0。如果你想保持容量,可以参考下代码:
// var originalCapacity = arr.capacity //
// originalCapacity = 12
// arr.removeAll(keepingCapacity: true)
// var newCapacity = arr.capacity //
// newCapacity = 12
// 由上代码可以看出emptyArray在需要重新分配内存之前可以存储12个值,然而使用removeAll(),newCapcity则等于0。 //2.3移除数组的第一个元素
// arr.removeFirst()
//2.4移除数组的最后一个元素
// arr.removeLast()
// 在这些移除的方法里都有返回被移除的数据 // 3. 数组的长度
let count = arr.count
print("arrCont = \(count)") // 4.数组中元素的修改
arr[] = "xiugai"
print("xiuGai = \(arr)") // 5.访问数组中的元素
let item = arr[]
print("item = \(item)")
遍历数组
var stringArr:[String] = ["xiaoming","tianya","xiaoming","tiantian"]
// 遍历数组
for item in stringArr {
print("iteem == \(item)")
} for item in ..<stringArr.count {
print("iteem == \(item)")
} // 设置遍历的区间
for item in stringArr[...] {
print("iteem == \(item)")
}
Swift4.0 Array详解的更多相关文章
- Vue1.0用法详解
Vue.js 不支持 IE8 及其以下版本,因为 Vue.js 使用了 IE8 不能实现的 ECMAScript 5 特性. 开发环境部署 可参考使用 vue+webpack. 基本用法 1 2 3 ...
- Android消息传递之EventBus 3.0使用详解
前言: 前面两篇不仅学习了子线程与UI主线程之间的通信方式,也学习了如何实现组件之间通信,基于前面的知识我们今天来分析一下EventBus是如何管理事件总线的,EventBus到底是不是最佳方案?学习 ...
- [转载]AxureRP 7.0部件详解(一)
本文为Axure RT7.0教程,本章主要介绍menu菜单.table表格.Tree Widget 树部件三个部件,后续将持续更新...... Menu 菜单 常用案例 网站导航菜单部件通常用于母板之 ...
- Cocos2d-x 3.0坐标系详解(转载)
Cocos2d-x 3.0坐标系详解 Cocos2d-x坐标系和OpenGL坐标系相同,都是起源于笛卡尔坐标系. 笛卡尔坐标系 笛卡尔坐标系中定义右手系原点在左下角,x向右,y向上,z向外,OpenG ...
- NPOI2.2.0.0实例详解(十)—设置EXCEL单元格【文本格式】 NPOI 单元格 格式设为文本 HSSFDataFormat
NPOI2.2.0.0实例详解(十)—设置EXCEL单元格[文本格式] 2015年12月10日 09:55:17 阅读数:3150 using System; using System.Collect ...
- windows版mysql8.0安装详解
2018年07月04日 13:37:40 Zn昕 阅读数 6433更多 分类专栏: mysql 版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. ...
- vue-cli3.0配置详解
这次给大家带来vue-cli3.0配置详解,使用vue-cli3.0配置的注意事项有哪些,下面就是实战案例,一起来看一下. 新建项目 1 2 3 4 5 6 7 8 # 安装 npm install ...
- .NET ORM框架 SqlSuagr4.0 功能详解与实践【开源】
SqlSugar 4.0 ORM框架的优势 为了未来能够更好的支持多库分布式的存储,并行计算等功能,将SqlSugar3.x全部重写,现有的架构可以轻松扩展多库. 源码下载: https://gith ...
- OAuth2.0认证详解
目录 什么是OAuth协议 OAuth2.0是为了解决什么问题? OAuth2.0成员和授权基本流程 OAuth2.0成员 OAuth2.0基本流程 什么是OAuth协议 OAuth 协议为用户资源的 ...
随机推荐
- Akka(16): 持久化模式:PersistentFSM-可以自动修复的状态机器
前面我们讨论过FSM,一种专门为维护内部状态而设计的Actor,它的特点是一套特殊的DSL能很方便地进行状态转换.FSM的状态转换模式特别适合对应现实中的业务流程,因为它那套DSL可以更形象的描述业务 ...
- OpenCV探索之路(二十二):制作一个类“全能扫描王”的简易扫描软件
相信很多人手机里都装了个"扫描全能王"APP,平时可以用它来可以扫描一些证件.文本,确实很好用,第一次用的时候确实感觉功能很强大啊算法很牛逼啊.但是仔细一想,其实这些实现起来也是很 ...
- python--代码统计(进阶版)
在上一篇的随笔中发表了代码统计小程序,但是发表后,我发现,以前写的代码怎么办 写了那么多,怎么就从0开始了呢,,,,我还是个孩子啊,不能这么残忍 于是,代码统计进阶版:统计当前目录下所有指定文件类型的 ...
- ubuntu系统普通用户sudo命令执行报错解决方案
通过adduser user1命令创建普通用户,且使该用户具有sudo权限(将该新用户user1添加到sudo或root用户组中,或者修改/etc/sudoer文件),但是依然无法执行sudo指令,会 ...
- [入门向选讲] 插头DP:从零概念到入门 (例题:HDU1693 COGS1283 BZOJ2310 BZOJ2331)
转载请注明原文地址:http://www.cnblogs.com/LadyLex/p/7326874.html 最近搞了一下插头DP的基础知识……这真的是一种很锻炼人的题型…… 每一道题的状态都不一样 ...
- 在App Store中无法更新xcode 8.3.2时 以及更新新系统10.12
今天更新Xcode 遇到三个坑坑1 要想更新Xcode最新版本 需要先把电脑系统更新到10.12 坑2 电脑系统更新到10.12 需要更新Mac Sierra 就可以了坑3 在App Store中下载 ...
- Python解析PDF三法
span{line-height:2em} --> 最近做调研想知道一些NZ当地的旅游信息,于是在NZ留学的友人自高奋勇地帮我去各个加油站拿了一堆旅游小册子,扫描了发给我. 但是他扫描出的高清图 ...
- Linux - 简明Shell编程01 - 第一个脚本(HelloShell)
脚本地址 https://github.com/anliven/L-Shell/tree/master/Shell-Basics 示例脚本及注释 #!/bin/bash echo "hell ...
- async简单使用
node的异步io虽然好用,但是控制异步流程确实一个比较麻烦的事情,比如在爬虫中控制并发数量,避免并发过大导致网站宕机或被加入黑名单.因此需要一个工具来控制并发,这个工具可以自己写或者使用async( ...
- Android开发 去掉标题栏方法 摘记
1.用代码里实现 提示:这句代码要写在Activity中的setContentView()方法前面. 2.在清单文件(Androidmanifest.xml)里面实现 android:theme= ...