Swift入门篇-集合
一:数组
一:可变数组 定义:数组使用有序列表存储相同类型的多重数据。 格式: 第一种格式 var 变量: 类型[] = [变量值,变量值,...] 第二种格式 var 变量 =[变量值,变量值,...] 说明: :[变量值,变量值...] 这样表示数组 ,前提是 变量值的类型必须一值。(和其他语言有所不同) :上面两种格式都是定义一个数组,数组中的变量值的类型必须一致 :第一种格式定义的数组,是直接定义数组,第二种格式定义的数组 是编译器通过类型值推导出是数组格式
注意点
:常量关键字(let) 定义的数组,不可变数组是不能做任何修改,只能访问。 :变量关键字(var) 定义的数组 ,可变数组可以修改,可以访问。
例子
//-------数组的定义------------ /*
1:["hello","swift"] -->[]里面包含的变量值类型都是字符串,即是字符串可变数组
2;编译器通过["hello","swift"] 来推断 arr变量的类型是字符串可变数组类型
*/ var arr = ["hello","swift"] /*
1:var arr1:String[]--->直接定义arr1 是字符串可变数组类型,其数组中值必须为字符串
*/
var arr1:String[] = ["hello","swift"] println("arr =\(arr), arr1=\(arr1)") 运行结果 arr =[hello, swift], arr1=[hello, swift]
注意点
var str = [" hellow",]
println("str =\(str)") 运行结果
str =(
" hellow", ) /*
1:[" hellow",11] -->[] 变量值类型是字符串和整形,类型不一致,即不是数组
2:结果(" hellow",11) 是一个不可变数组
*/
可变数组的操作
①:数组的长度和数组变量值修改
//-----------数组的长度---- var Arr = ["hell0","swift"]
var count = Arr.count //count 属性 返回 数组的长度
println( "count=\(count)") //------------数组中变量值的修改------
var str = [,,] str[] = //str[2] 指的是数组中索引为2的变量值即85 重新赋值为83
println("str=\(str)") 运行结果: count= str=[, , ]
②:可变数组的追加 += append
//-------数组的追加---appped()函数------------ var arr = [,] //定义整形数组变量arr
arr.append()//append(3) 是在arr数组的尾端追加变量值3到数组中 即数组长度增加1 println(" arr = \(arr) 长度=\(arr.count)") //-------数组的追加--- += ------------ var arr1 = [,] //定义整形数组变量arr
arr1 += // += 是在arr数组的尾端追加变量值3到数组中 数组长度增加1 (内部实现原理 也会用到append函数)
println(" arr1= \(arr1) 长度=\(arr1.count)") 运行结果 arr = [, , ] 长度=
arr1= [, , ] 长度=
③: 可变数组的插入 Insert(变量值 , atIndex: 索引)
//-------数组的追加 --- Insert(变量值 ,atIndex:索引)----------- var arr2 = [,]
arr2.insert(,atIndex:) // 在数组arr中0的位置插入变量值9 数组长度加1
println("arr2=\(arr2) 长度=\(arr2.count)") 运行结果 arr2=[, , ] 长度=
3: 可变数组的移除 removeAtIndex(索引),
removeLast()
//--------------数组的移除 removeLast() 数组尾端移除变量值---- var arr4 = [,,] arr4.removeLast() //移除数组arr3中尾端的 的变量值,数组长度减1
println(" arr4 =\(arr4) 长度=\(arr4.count)") //--------------数组的移除 removeAtIndex(索引)数组指定位置移除变量值---- var arr3 = [,,] arr3.removeAtIndex()//移除数组arr3中索引为0 的变量值,数组长度减1
println("arr3 =\(arr3) 长度=\(arr3.count)") 运行结果
arr4 =[, ] 长度=
arr3 =[, ] 长度=
4:创建空数组
①:定义可变空数组
格式:
变量关键字 变量 = 类型[] () 例子: var arr = Int[]() 注意点:
:常量关键字(let) 修辞的数组是不可变数组,不能修改,定义空字符数组没有意义
:变量关键字(var) 修辞的数组,是可变数组 实在是能动态改变的。 ②:IsEmpty 函数判断数组是否为空
//-----------空数组---- /*
1: Int[] () 是整形空数组
2: arr 数组变量 被let 修辞 ,arr数组只能访问
*/ let arr = Int[] () /*
1: Int[] () 是整形空数组
2: arr1 数组变量 被var 修辞 ,arr数组是可变数组,可以动态修改
*/
var arr1 = Int[] ()
arr1 +=
println("arr1= \(arr1)") //-----------判断数组是否为空---
var arr2 = Int[] () if arr2.isEmpty { //isEmpth 是判断数组是否是空数组
println("arr2 数组为空")
}
else{
println("arr2 数组不为空")
} 运行结果 arr1= []
arr2 数组为空
数组的遍历 for in (前面文章讲过用法)
//------------数组的访问-- for in ----- var arr = ["hello","swift"] for str in arr { // for 变量 in 集合 当执行for in的时候 集合中变量值会依次赋值给str println(str)
} 运行结果: hello
swift
二:可变字典
一:可变字典 定义:字典是一种存储相同类型多重数据的存储器。每个值(value)都关联独特的键(key),键作为字典中的这个值数据的标识符 格式: 第一种格式 变量 变量: Dictionary<类型,类型> = [变量值:变量值,变量值:变量值,...] 第二种格式 变量 变量 =[变量值:变量值,变量值:变量值,...] 说明:
例子:
第一种格式: var dic:Dictionary<String ,Int>= ["H1":,"H2":]
第二种格式: var dic = ["H1":,"H2":] 说明:
字典规范
:[]中由 key:value 键值组成的 :所有key 的类型必须一直, 所有value的类型必须一致,所有key不能重复 :第一种格式定义的字典,是直接定义字典,第二种格式定义的数组 是编译器通过类型值推导出是字典格式 注意点: :常量关键字(let) 定义的字典,是不可字典,是不能做任何修改,只能访问。 :变量关键字(var) 定义的字典 ,是可变字典,是可以修改,可以访问。
例子:
/*
1: [] 里面有key:value组成
2: 所有key的类型一直并且不重复,所有value类型一致
3:即 ["H1":1 ,"H2":2] 是一字典类型 ,编译器通过字典类型推导出 dic是可变字典
*/ var dic = ["H1": ,"H2":]
println("dic=\(dic)") /*
1:var dic1:Dictionary<String ,Int> 直接定义可变字典类型中key 为字符串 value 为整形
2:key中字符不能重复
*/ var dic1:Dictionary<String ,Int> = ["H1": ,"H2":] println("dic1=\(dic1)") 运行结果 dic=[H1: , H2: ]
dic1=[H1: , H2: ]
注意点:
/*
1:[] 是有key:value 组成
2:key 类型一直,不重复,但是value 类型不一致即是不可变字典 */ var str = ["str": ,"hell0":"swift"] println(str)
可变字典 修改值
1:updateValue(修改值, forKey key值)
2:通过[key] 来修改value 的值
//-------------通过key来修改value---updateValue(修改值, forKey key值) /*
1:[] 是有key:value 组成
2:key 类型一致,不充分是value 类型一致即是可变字典
*/
var str = ["str":"aa" ,"hell0":"swift"]
str.updateValue("bb" ,forKey:"str")
println("str =\(str)") //-------------通过key来修改value---同[key]来修改value 的值 var str1 = ["str":"aa" ,"hell0":"swift"]
str1["str"] = "cc" //字典同key(str) 直接修改key对应value
println("str1=\(str1)") 运行结果:
str =[str: bb, hell0: swift] str1=[str: cc, hell0: swift]
可变字典 -- 通过key 得到value的值 即value的是一个可选值。
/*
1:[] 是有key:value 组成
2:key 类型一致,不充分是value 类型一致即是可变字典 */ var str = ["str":"aa" ,"hell0":"swift"]
var temp = str["Str"] //访问字典不存在的key ,返回值为nil
var temp1 = str["str"] //访问字典存在的key,返回对应的value
println("temp=\(temp),temp1 = \(temp1)") // 总结 str[key] 返回值可能是正确,也有可能是返回nil 即 str[key] 返回值是可选值 运行结果;
temp=nil,temp1 = aa
字典的遍历 ----for in
var dic = ["hello": , "swift":] // for 元组 in 字典集合 用元组来表示字典中对应的键值 for (key,value) in dic { println("key=\(key),value=\(value)")
}
创建一个空的可变字典
格式 :
var 变量 = Dictionary<key类型,value类型()
//创建一个key为字符串 value 为整形的空字典,并且字典为可变字典
var arr = Dictionary<String,Int> ()
Swift入门篇-集合的更多相关文章
- Swift入门篇-闭包和函数
今天主要是给大家分享的是 swift中闭包的用法,我个人觉得闭包就是函数的简写方法,如果您函数不是很熟悉请查阅 swift入门篇-函数 1:函数类型 函数类型 var 变量 :(类型)->返回值 ...
- Swift入门篇-循环语句
今天早上一起来所有新闻都是报道荷兰5-1战胜西班牙,我一看没有搞错吧,顿时想都如果中国队vs荷兰队也不至于会输的怎么惨吧,难道是荷兰队开挂了,于是我看了一下昨天比赛的视频直播,还真是新闻报道的那样,顿 ...
- Swift入门篇-字符串和字符
今天主要是介绍一下字符串的用法 ,字符串的语法和object-c语法不太一样,但是思想是一样,就是写法不太一样.如果您对.net和java语法比较熟悉的话,那您几乎没有深压力.如果您对swift 基本 ...
- Swift入门篇-基本类型(2)
现在我也在学习Swift语言,常常去逛很多苹果社区和论坛,看到了圈子很多奇怪的现象,发现很多人都赶忙去翻译 Swift书籍 和 发布Swift的视频 .他们这种对新知识的探索精神我本人是很佩服的.但是 ...
- Swift入门篇-Hello World
提示:如果您使用手机和平板电脑看到这篇文章,您请在WIFI的环境下阅读,里面有很多图片, 会浪费很多流量. 博主语文一直都不好(如有什么错别字,请您在下评论)望您谅解,没有上过什么学的 最近这2天主要 ...
- Swift入门篇-swift简介
潜水博客园很多年,闲来无事,聊一下自己的经历,语文不好(如有什么错别字,请您在下评论)望您谅解,没有上过什么学的 在前期 ios入门篇 -hello Word(1) 文章中介绍我这半年准备写一些ios ...
- Swift入门篇-基本类型(1)
博主语文一直都不好(如有什么错别字,请您在下评论)望您谅解,没有上过什么学的 今天遇到了一个很烦的事情是,早上10点钟打开电脑,一直都进入系统(我的系统 mac OS X Yosemite 10.1 ...
- Swift入门篇-结构体
前面主要是介绍swift语言中基本类型的用法,今天给大家介绍的是swift的结构体的用法,swift中结构体的用法和其他语言的用法,还有不太一样,不过您多敲几遍,就可以理解结构体,结构体在ios开发中 ...
- swift入门篇-函数
今天给大家介绍 swift函数,swift函数和c#,js的写法大致一直,但是与object-c写法有很大不同点.废话不多说,直接开始了. 1:函数 --常量参数 func 函数名( 参数变量:类型 ...
随机推荐
- Redis 集群方案- 主从切换测试
大约一年多前,公司同事开始使用Redis,不清楚是配置,还是版本的问题,当时的Redis经常在使用一段时间后,连接爆满且不释放.印象中,Redis 2.4.8以下的版本由于设计上的主从库同步问题,就会 ...
- Tempter of the Bone---hdu1010(dfs+剪枝)
http://acm.hdu.edu.cn/showproblem.php?pid=1010 折磨我一下午 题目大意: 从s点走到d点能否恰好走k步 刚开始以为是广搜,其实是深搜. dfs多优化一 ...
- C# 基础(6)--Winform
WinForm 简称,Windows Form ,调用.Net框架. Return 只是退出当前方法. MessageBox.Show("输入的Email地址是非法的!"); 把整 ...
- 傅盛谈管理的本质zz
管理的本质就是树立一个核心的业务,让这个业务带着所有的员工和组织构架往前走,而不是去构建一个四平八稳的组织,让所有的业务井井有条. 今天,整个互联网都在回归本原.它让以前看上去极简单的点产生爆发,而不 ...
- 【kd-tree】bzoj3053 The Closest M Points
同p2626.由于K比较小,所以不必用堆. #include<cstdio> #include<cstring> #include<cmath> #include& ...
- Restful风格API接口开发springMVC篇
Restful风格的API是一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机 ...
- office2003-2007 绿色版 出错 文件丢失(未解决)
- 这个版本是我大学时候(2012)年一直用到现在的版本:目录结构如下: 原来一直在32位系统中使用,没有出错过; - 刚装的两台电脑系统分别为 Win7Pro 和 Win10Pro ,都是64位的: ...
- C++二级指针第二种内存模型(二维数组)
C++二级指针第二种内存模型(二维数组) 二维数组 二维数组本质上是以数组作为数组元素的数组,即“数组的数组”. 定义 类型说明符 数组名[常量表达式][常量表达式] 例如: float a[3][4 ...
- 《LINUX内核设计与实现》读书笔记之第一章和第二章
一.第一章 1. Unix内核的特点简洁:仅提供系统调用并有一个非常明确的设计目的抽象:几乎所有东西都被当做文件可移植性:使用C语言编写,使得其在各种硬件体系架构面前都具备令人惊异的移植能力进程:创建 ...
- mysql增加普通用户后无法登陆问题的解决方法
解决方法: 增加普通用户后,执行: mysql> use mysql mysql> delete from user where user=''; mysql> flush priv ...