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名字使用大写字母开头的匈牙利表示法,相反的.类的方法和属性则用小写字 ...
随机推荐
- [转]理解dropout
理解dropout 原文地址:http://blog.csdn.net/stdcoutzyx/article/details/49022443 理解dropout 注意:图片都在github上 ...
- ICMP
(一)ICMP IP是一个尽力的不可靠的协议,IP不能提供差错控制(如果数据在传播过程中出现错误了),这个时候ICMP就起作用了. ICMP提供两个功能:差错的报告,查询. ICMP的ICMP包分为两 ...
- @gettrcname.sql
http://www.eygle.com/archives/2007/05/script_gettrcname.html 最近有很多朋友问起<深入浅出Oracle>一书中的一个脚本gett ...
- MSSERVER创建链接服务器
exec sp_addlinkedserver 'DB_RASS','','SQLOLEDB','127.0.0.1' ' exec sp_serveroption 'DB_RASS','rpc ou ...
- (Python) 函数、匿名函数
本节将学习如何用Python定义函数,调用函数,以及学习匿名函数的使用 1.定义函数 Python中定义函数用关键字def,如下例所示,testFun为函数名 def testFun(): print ...
- Dojo注意
关于插件的加载: 回调函数中的顺序,是按照插件的顺序填写的,否则就很可能会插件加载出错.
- jquery注意
具有 true 和 false 两个属性的属性,如 checked, selected 或者 disabled 使用prop(),其他的使用 attr():
- 张小龙《微信背后的产品观》之PPT完整文字版
微信回顾 433天,一亿用户 成为移动互联网的新入口 启动(2010年11月19日) 用户数突破1亿 1.0 1月26日 2.0 5月10日 语音对讲 2.5 8月3日 查看那附近的人 3.0 10月 ...
- myeclipse2013以及以后的最新版各种破解(其实就是获取活跃码而已)
当你下到最新版的myeclipse-blue的时候你是否会为注册激活而烦恼呢,别担心,其实激活也就那么点事儿,请遵循我如下做法就可以了: 免积分下载破解地址 http://download.csdn. ...
- berkeley db replica机制 - election algorithm
repmgr_method.c, __repmgr_start_int() 初始2个elect线程. repmgr_elect.c, __repmgr_init_election() __repmgr ...