Swift 数组,字典,结构体,枚举
1.数组
let types = ["none","warning","error"]//省略类型的数组声明
var menbers = [String]()//声明空数组
menbers.append("six")//添加元素
menbers += ["seven"]//添加元素
menbers.insert("one", at: )//指定位置添加元素
menbers[] = "message"//通过下标修改元素
menbers[...] = ["message","banana","orange"]//通过区间修改元素
print(types)
print(menbers)
print(menbers.count)//数组个数
print(menbers.isEmpty)//数组是否为空
menbers.swapAt(, )//元素之间交换
//menbers.remove(at: 2)//删除某一个元素
//menbers.removeLast()//删除最后一个元素
let addStringArr = types + menbers
//数组遍历
for value in addStringArr {
print("\(value)")
}
//元祖遍历
for (index,value) in menbers.enumerated() {
print("索引:\(index) 数据:\(value)")
} //过滤数组元素
let newTypes = types.filter { (item) -> Bool in
return item.count <
}
print(newTypes) //创建包含100个元素的数组
let items = Array(..<).map{ "条目\($0)"}
print(items)
//2.0 字典
//var emptyDict = [String : Int]()//空字典
//声明一个字典
var myDict = ["name":"hangge","url":"hangge.com"]
myDict["address"] = "china" //添加/修改字典
myDict.removeValue(forKey: "name")//删除某一个key
myDict["name"] = nil //删除某一个key值
//字典的key,value
print(myDict.keys,myDict.values)
//遍历字典
for (key,value) in myDict {
print("\(key):\(value)")
}
//顾虑字典元素
let dict2 = myDict.filter { (item) -> Bool in
return item.value.count <
}
print(dict2) //通过元祖创建字典
let duplicatesArray = [("Monday",),("Tuesday",),("Wednesday",),("Sunday",)]
let dic = Dictionary(duplicatesArray, uniquingKeysWith: min)
print(dic) //合并字典
var dict1 = ["one":,"two":]
//merge 合并
let tuples = [("one",),("three",)]
dict1.merge(tuples, uniquingKeysWith: min)
print("dict:\(dict1)")
//merging 合并
let dict3 = dict1.merging(tuples, uniquingKeysWith: min)
print("dict2:\(dict3)") //字典不存在时,指定默认值
let dict4 = ["apple":,"banana":]
var orange : Int
if let value = dict4["orange"] {
orange = value
}else {
orange =
}
let longan = dict4["longan",default:] print(orange)
print(longan)
//创建一个结构体
struct BookInfo {
var id : Int =
var name : String = "default"
var authord : String = "default"
}
var book1 : BookInfo //默认构造器创建结构体
var book2 : BookInfo = BookInfo.init(id: , name: "航哥", authord: "hanggge")
book1 = book2
book2.id =
print(book1,book2) //枚举
enum Compasspoint {
case north
case south
case east
case west
}
let directionTohead = Compasspoint.east
print(directionTohead) enum Planet : Int {
case mercury =
case venus =
case earth =
}
let earthsorder = Planet.earth
print(earthsorder) enum Direction {
case up
case down
func description() -> String {
switch self {
case .up:
return "向上"
case .down:
return "向下"
}
}
}
print(Direction.up.description())
//默认构造器
class Student{
var name : String = ""
var number : Int =
}
//自定义构造函数
class Person{
//雷属性
var name:String
var age:Int
//类构造函数
init(newName:String,newAge:Int) {
self.name = newName
self.age = newAge
}
//实例函数
func say() -> String {
return "我叫MT\(name)"
}
}
class People {
//普通属性
var firstName:String = ""
var lastName:String = ""
var nickName:String = "" //计算属性
var fullName:String {
get {
return nickName + " " + firstName + " " + lastName
}
}
//带属性监视器普通属性
var age:Int = {
//属性变化前
willSet{
print("will set an new value\(age) to age")
}
didSet{
print("age file change form \(oldValue) to \(age)")
if age < {
nickName = "Little"
}else{
nickName = "Big"
}
}
}
func toString() ->String{
return "Full name \(fullName) +_ age\(age)"
}
}
/*结构体运用*/
struct Account {
var amount:Double = 0.0
var owner:String = ""
//修饰静态方法
static var interestRate:Double = 0.668
static func interestBy(amount:Double) ->Double{
return interestRate * amount
}
}
class Account_class {
var amount:Double = 0.0
var owner:String = "" class var staticProp: Double {
return 0.668
}
class func interestBy(amount:Double) ->Double{
return staticProp * amount
}
}
Swift 数组,字典,结构体,枚举的更多相关文章
- swift中的结构体和枚举
Swift 里的结构体非常特殊. 类是面向对象编程语言中传统的结构单元.和结构体相比,Swift 的类支持实现继承,(受限的)反射,析构函数和多所有者. 既然类比结构体强大这么多,为什么还要使用结构体 ...
- 5、数组&字符串&结构体&共用体&枚举
程序中内存从哪里来 三种内存来源:栈(stack).堆(heap).数据区(.date): 栈(stack) 运行自动分配.自动回收,不需要程序员手工干预: 栈内存可以反复使用: 栈反复使用后,程序不 ...
- swift 类 与 结构体
这两天突然有人问我 swift里面 类和 结构体 有什么区别? 说实在的本人目前不太看好swift,相信很多人也是,oc 都 很成熟了. 本人目前不打算深入了解swift的原因swift 语言 ...
- Swift类和结构体
在C++中,相信不会有太多人去详细考究结构体和类的区别,因为二者关系实在不大.但在Swift中,结构体和类的关系非常大,它们的组成部分都包括:初始化器.实例方法.实例属性.类型属性.类型方法等等:二者 ...
- swift中类与结构体
写了12个Person来复习,不过完成同样的代码需要敲键盘的次数相比OC确实少了很多,这很多应该归功于Swift中不写分号,以及少了OC中的中括号. 一.类与结构体 两者在Swift中差不了多少了 类 ...
- Delphi - 数组和结构体
技术交流,DH讲解. 记得很早之前我就说过,数组和结构体在内存中其实一样的,他们都是连续分布的.例如: ? 1 2 3 4 TMyStruct = record A,B,C:Integer; en ...
- OC基础--结构体 枚举做类成员属性
结构体 枚举作类的成员属性: 定义一个学生类 性别 -- 枚举 生日 入学日期 毕业日期 -- 结构体 代码示例: 声明文件 Student.h: #import <Foundation ...
- 全面总结sizeof的用法(定义、语法、指针变量、数组、结构体、类、联合体、位域位段)
一.前言 编译环境是vs2010(32位). <span style="font-size:18px;">#include<iostream> #inclu ...
- 【原创】只学到二维数组和结构体,不用链表也能写一个C贪食蛇?(四)
全系列Index: [原创]只学到二维数组和结构体,不用链表也能写一个C贪食蛇?(一) [原创]只学到二维数组和结构体,不用链表也能写一个C贪食蛇?(二) [原创]只学到二维数组和结构体,不用链表也能 ...
- C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com
原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | I ...
随机推荐
- Android自己定义控件--下拉刷新的实现
我们在使用ListView的时候.非常多情况下须要用到下拉刷新的功能.为了了解下拉刷新的底层实现原理,我採用自己定义ListView控件的方式来实现效果. 实现的基本原理是:自己定义ListView, ...
- 1492: [NOI2007]货币兑换Cash【CDQ分治】
1492: [NOI2007]货币兑换Cash Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 4166 Solved: 1736[Submit][Sta ...
- apache下实现301永久性重定向的方法
因为博客是使用了www.php100.com作为博客域名,所以想实现php100.com全部重定向(跳转)到www.php100.com.同时按照google的建议,使用服务器端 301 重定向,为了 ...
- hibernate双向关联
双向关联中最好的设置是一端为inverse=true,一端为inverse=false. falses维护,true不维护,设置多的一方维护(false) inverse属性就是用来规定是由谁来维护这 ...
- RSA加密:利用模数和指数生成公钥加密
引子 目前做一款金融产品,由于涉及到资金安全,采用动态公钥的方式,即客户端每次登录服务端返回一个不同的XML串,由公钥的模数和指数构成,我需要用这个串生成公钥加密相关信息.服务端返回的XML串形如: ...
- Windows程序设计(0)——编程之前
Windows程序设计之前 1 做什么 2 解决什么问题 3 有哪些资源 在开始真正的编程之前,需要了解要做的事情是什么,要解决的解决的问题是什么,有哪些资源可以使用. 1 Windows程序设计之前 ...
- Gym - 100676D Sudoku 基础题
题目链接:https://odzkskevi.qnssl.com/1110bec98ca57b5ce6aec79b210d2849?v=1490453767 题解: 方法1:用STL的set,把每个数 ...
- HDU1873 看病要排队 —— 优先队列(STL)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1873 题解: 题目已经说出了解题方法:优先队列.但是之前没有学过优先队列,而且这题还是在现场赛做的.由 ...
- SqlServer--学习触发器
触发器是一种特殊的存储过程,一种不能被显式执行,而必须依附于一个事件的过程 主要作用:自动化操作;减少手动操作以及出错的几率. 触发器分类:DML(Data Manipulation Language ...
- gitblit安装使用
1.下载地址 http://www.gitblit.com/ 2.安装jdk(自行安装) 3.解压gitblit # tar -zxvf gitblit-1.8.0.tar.gz 4.配置# cd g ...