Swift入门篇-结构体
前面主要是介绍swift语言中基本类型的用法,今天给大家介绍的是swift的结构体的用法,swift中结构体的用法和其他语言的用法,还有不太一样,不过您多敲几遍,就可以理解结构体,结构体在ios开发中是灰常重要的一部分,如果您很好的掌握结构体,在后面ios开发中,会理解的更加清楚。
一:结构体声明
格式: struct 结构体名 { } 说明: : struct 是定义结构体的关键字
例子
/* 1:struct 是结构体的关键字 2:student 结构体名称 3:student() 创建一个结构体变量
*/ struct student { } var stu = student () //student() 表示创建一个结构体变量
二 :结构体声明 字段
定义结构体字段2种方法
struct 结构体名 {
第一种直接定义字段名 并且给字段名赋初始值
var 或 let 字段名 = 初始化值
第二种定义字段名并且指定字段类型
var 或 let 字段名:类型
}
例子
struct student {
var age = //直接定义一个字段名称,并且给字段名赋初始值
var name:String // 直接定义一个字符串字段name。
}
三 :结构体声明 字段的访问
一: 创建结构体变量,结构体的字段都必须有初始值,否则会报错 二: 结构体内部 只有在构造函数(init)中修改字段的值,在结构体内部中方法和属性内不能直接修改结构体内部字段的值。
三: 在结构体外部,结构体变量,可以访问结构体字段,也可以修改结构体字段的值。 ①:构造函数给结构体字段 赋初始值 说明:
: swift语言中指定结构体构造函数,是init方法 :init执行方法,在创建结构体变量之前执行 3:在创建结构体题变量的参数必须和构造函数init 参数必须一致。 ②:创建结构体变量赋初始值 在创建结构体变量,并且直接赋值给字段,其中注意点 赋初始值的顺序必须和声明结构体的顺序一致。
例子
无参构造函数
struct student {
var age = //直接定义一个字段名称,并且赋初始值
var name:String // 直接定义一个字符串变量。
//定义 无参数构造函数
init() {
name = "zs"
age =
}
}
/*
1: student () 创建一个结构体变量 ,系统会自动调用构造函数init()
*/
var stu = student ()
println("name=\(stu.name),age=\(stu.age)") 运行结果 name=zs,age=
有参数构造函数
struct student {
var age = //直接定义一个字段名称,并且赋初始值
var name:String // 直接定义一个字符串变量。
//定义 有参数构造函数
init(Name:String,Age:Int) {
self.name = Name //self 指的是当前结构体变量 self.name 当前结构体的变量的字段
self.age = Age
}
}
/*
1;student (Name:"ls",Age:12) 创建结构体变量 系统会调动构造函数,并且创建结构体的参数于构造函数参数一致
2:student (Name:"ls",Age:12) 后面跟着的参数名称必须于构造函数参数变量名相同
*/
var stu = student (Name:"ls",Age:) //因为构造函数有2个参数,所对应创建结构体的变量的参数要一致
println("name=\(stu.name),age=\(stu.age)") 运行结构 name=ls,age=
有参数构造函数 参数变量加 _ 用法
: 创建结构体的对象中对应参数必须和构造函数对应的参数一致 : 如果构造函数中参数变量前加 _ 其对应创建对象的参数,不需要变量名
struct Point{
var x = 0.0
var y = 0.0
init(_ x :Double ,_ y :Double){
self.x = x
self.y = y
}
}
/*
1: init(_ x :Double ,_ y :Double) 构造函数中对应变量前面加 _ 其对应创建对象后面不需要变量名。
*/
var p = Point(10.0,11.0)
println("x=\(p.x) y=\(p.y)")
创建结构体变量赋初始值
struct student {
var age = //直接定义一个字段名称,并且赋初始值
var name:String? // 直接定义一个字符串变量。
}
/*------创建结构体变量赋初始值
var stu = student(age:12,name:"甘超波")
说明:
1:创建一个结构体变量stu,其中字段 age 的值为12 name 的值为 "甘超波"
注意点:
student()括号后面跟着参数 必须和定义结构体的字段的顺序一致
错误写法
var stu1 = student(name:"甘超波",age:12)
因为 创建结构体的变量中初始化字段的顺序和定义结构体声明字段的顺序不一致
*/
var stu = student(age:,name:"甘超波")
println("name=\(stu.name),age=\(stu.age)")
运行结果
name=甘超波,age=
结构体 方法
:结构体中可以直接存储方法 注意点: 结构体中方法不能直接修改字段的值,否则会报错
例子
struct student {
var age = //直接定义一个字段名称,并且赋初始值
//定义结构体方法
func GetAge() ->Int{
return age
}
}
/*
注意点: 结构体中方法不能直接修改字段的值,否则会报错
*/
var stu = student()
stu.age =
println(stu.age)
运行结果
结构体属性
属性 主要是get set方法
例子
struct Point{
var x = 0.0
var y = 0.0
}
struct CPoint {
var p = Point()
//声明属性 ,get set方法
var GPoint :Point{
get{
return p
}
set(newPoint){
p.x = newPoint.x
p.y = newPoint.y
}
}
}
var p = Point(x:10.0,y:11.0)
var CP = CPoint()
CP.GPoint = p
println("x=\(CP.GPoint.x),y=\(CP.GPoint.y)")
运行结果
x=10.0,y=11.0
系统提供常见结构体 有 Bool Int Float Double String 等
注意点:SWift语言中 String 是结构体类型

结构体值传递的时候都是
后面的文章,我回陆续把我学习到swift语言的知识写出来形成一个系列。由于是新语言,难免有不足,欢迎给我提出意见。也可以加我QQ 1436051108一起讨论,如果您有什么问题,也可以直接在QQ留言发给我,我看到之后第一时间回复您
最后总结一下。送上一直思维导图,作为文章的结束

Swift入门篇-结构体的更多相关文章
- swift中的结构体和枚举
Swift 里的结构体非常特殊. 类是面向对象编程语言中传统的结构单元.和结构体相比,Swift 的类支持实现继承,(受限的)反射,析构函数和多所有者. 既然类比结构体强大这么多,为什么还要使用结构体 ...
- Swift入门篇-闭包和函数
今天主要是给大家分享的是 swift中闭包的用法,我个人觉得闭包就是函数的简写方法,如果您函数不是很熟悉请查阅 swift入门篇-函数 1:函数类型 函数类型 var 变量 :(类型)->返回值 ...
- Swift入门篇-循环语句
今天早上一起来所有新闻都是报道荷兰5-1战胜西班牙,我一看没有搞错吧,顿时想都如果中国队vs荷兰队也不至于会输的怎么惨吧,难道是荷兰队开挂了,于是我看了一下昨天比赛的视频直播,还真是新闻报道的那样,顿 ...
- Swift入门篇-字符串和字符
今天主要是介绍一下字符串的用法 ,字符串的语法和object-c语法不太一样,但是思想是一样,就是写法不太一样.如果您对.net和java语法比较熟悉的话,那您几乎没有深压力.如果您对swift 基本 ...
- Swift入门篇-基本类型(2)
现在我也在学习Swift语言,常常去逛很多苹果社区和论坛,看到了圈子很多奇怪的现象,发现很多人都赶忙去翻译 Swift书籍 和 发布Swift的视频 .他们这种对新知识的探索精神我本人是很佩服的.但是 ...
- swift 类 与 结构体
这两天突然有人问我 swift里面 类和 结构体 有什么区别? 说实在的本人目前不太看好swift,相信很多人也是,oc 都 很成熟了. 本人目前不打算深入了解swift的原因swift 语言 ...
- Swift入门篇-Hello World
提示:如果您使用手机和平板电脑看到这篇文章,您请在WIFI的环境下阅读,里面有很多图片, 会浪费很多流量. 博主语文一直都不好(如有什么错别字,请您在下评论)望您谅解,没有上过什么学的 最近这2天主要 ...
- Swift类和结构体
在C++中,相信不会有太多人去详细考究结构体和类的区别,因为二者关系实在不大.但在Swift中,结构体和类的关系非常大,它们的组成部分都包括:初始化器.实例方法.实例属性.类型属性.类型方法等等:二者 ...
- swift 类和结构体
1:类和结构体定义 类和结构体分别通过关键字class 和struct定义. swift的编码风格是类class和结构体struct名字使用大写字母开头的匈牙利表示法,相反的.类的方法和属性则用小写字 ...
随机推荐
- getContextPath、getServletPath、getRequestURI的区别
假定你的web application 项目名称为news,你在浏览器中输入请求路径: http://localhost:8080/news/main/list.jsp 则执行下面向行代码后打印出如下 ...
- delphi XE5下 andriod 广告图片的demo
试了一下,关于好几个广告界面,左右滚动的效果:用TabControl 加上定时器实现即可. 1.TTabControl外观 TTabControl的外观由属性TabPosition控制,可选项包括: ...
- Github心得体会
Github是一个代码托管的网站,以前端的代码为主,还有很多互动. 在我的理解看来,github并不仅仅是一个代码库,你可以自由注册,推送自己一些感兴趣编写的源代码.它不是单纯的保存代码,更多的是让 ...
- 两个不等式(Nopier)
- 诡异的too manany connections报错
问题现象: 应用重启,日志里面报错too manany connections 问题分析: 昨天割接,线上该业务线应用全部重启,一个有38个应用,每个应用3台服务器,每台服务器启动5个链接: num= ...
- C++中类的前向声明的用法
原创文章,未经博主允许禁止转载. C++的类可以进行前向声明.但是,仅仅进行前向声明而没有定义的类是不完整的,这样的类,只能用于定义指针.引用.以及用于函数形参的指针和引用.而不能定义对象(因为此时编 ...
- Android性能优化方法(九)
通常我们写程序,都是在项目计划的压力下完成的,此时完成的代码可以完成具体业务逻辑,但是性能不一定是最优化的.一般来说,优秀的程序员在写完代码之后都会不断的对代码进行重构.重构的好处有很多,其中一点,就 ...
- LINQ to SQL大全
LINQ to SQL语句 (1)之Where Where操作 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的 ...
- 搭建Openstack云平台
实验室需要做一个大数据平台项目,临时接下需要部署实验室云平台的任务,由于之前没有接触过相关技术,仅以此篇作为纪录文,记录一下我的openstack的初步学习以及搭建过程. 1.openstcak及其组 ...
- ( 转)基于.NET平台常用的框架整理
自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线,让我对这个平台产生了浓厚的兴趣,在工作和学习中也积累了一些开源的组件,就目前想到的先整理于此,如果再想到,就 ...