前面主要是介绍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入门篇-结构体的更多相关文章

  1. swift中的结构体和枚举

    Swift 里的结构体非常特殊. 类是面向对象编程语言中传统的结构单元.和结构体相比,Swift 的类支持实现继承,(受限的)反射,析构函数和多所有者. 既然类比结构体强大这么多,为什么还要使用结构体 ...

  2. Swift入门篇-闭包和函数

    今天主要是给大家分享的是 swift中闭包的用法,我个人觉得闭包就是函数的简写方法,如果您函数不是很熟悉请查阅 swift入门篇-函数 1:函数类型 函数类型 var 变量 :(类型)->返回值 ...

  3. Swift入门篇-循环语句

    今天早上一起来所有新闻都是报道荷兰5-1战胜西班牙,我一看没有搞错吧,顿时想都如果中国队vs荷兰队也不至于会输的怎么惨吧,难道是荷兰队开挂了,于是我看了一下昨天比赛的视频直播,还真是新闻报道的那样,顿 ...

  4. Swift入门篇-字符串和字符

    今天主要是介绍一下字符串的用法 ,字符串的语法和object-c语法不太一样,但是思想是一样,就是写法不太一样.如果您对.net和java语法比较熟悉的话,那您几乎没有深压力.如果您对swift 基本 ...

  5. Swift入门篇-基本类型(2)

    现在我也在学习Swift语言,常常去逛很多苹果社区和论坛,看到了圈子很多奇怪的现象,发现很多人都赶忙去翻译 Swift书籍 和 发布Swift的视频 .他们这种对新知识的探索精神我本人是很佩服的.但是 ...

  6. swift 类 与 结构体

    这两天突然有人问我  swift里面 类和 结构体  有什么区别? 说实在的本人目前不太看好swift,相信很多人也是,oc 都 很成熟了. 本人目前不打算深入了解swift的原因swift  语言 ...

  7. Swift入门篇-Hello World

    提示:如果您使用手机和平板电脑看到这篇文章,您请在WIFI的环境下阅读,里面有很多图片, 会浪费很多流量. 博主语文一直都不好(如有什么错别字,请您在下评论)望您谅解,没有上过什么学的 最近这2天主要 ...

  8. Swift类和结构体

    在C++中,相信不会有太多人去详细考究结构体和类的区别,因为二者关系实在不大.但在Swift中,结构体和类的关系非常大,它们的组成部分都包括:初始化器.实例方法.实例属性.类型属性.类型方法等等:二者 ...

  9. swift 类和结构体

    1:类和结构体定义 类和结构体分别通过关键字class 和struct定义. swift的编码风格是类class和结构体struct名字使用大写字母开头的匈牙利表示法,相反的.类的方法和属性则用小写字 ...

随机推荐

  1. Java Hotspot G1 GC的一些关键技术

    G1 GC,全称Garbage-First Garbage Collector,通过-XX:+UseG1GC参数来启用,作为体验版随着JDK 6u14版本面世,在JDK 7u4版本发行时被正式推出,相 ...

  2. 20145225《Java程序设计》 2015—2016年学期课程总结

    20145225<Java程序设计> 2015—2016年学期课程总结 读书笔记链接汇总 1.2016年2月25日 <Java程序设计>课程准备之问卷调查 摘要: 一.你对自己 ...

  3. 使用代码在windows-store中打开、搜索应用程序

    //Launcher.LaunchUriAsync(newUri("ms-windows-store:PDP?PFN=" + Package.Current.Id.FamilyNa ...

  4. 「2013-9-5」Configure WingIDE for better display of East Asian Glyphs

    很久没写软件配置相关的博客了.这次对于 WingIDE 在 Windows 下的字体配置,折腾了好一阵子,略曲折,也反映了「不清楚原理和背景的情况下,盲人摸象的效率低下是必然」这条放之四海而皆准的赤果 ...

  5. 4.13-4.17c语言学习

    这周学习开始接触c语言,使用的工具是c-free5,主要是把之前的一些函数流程图通过编写代码实现运行,本周最后一天的作业是做简易的atm机运行逻辑程序,是在main主函数外附加使用void函数,其主要 ...

  6. iOS 开发中的CGFloat,CGPoint,CGSize和CGRect

    CGGeometry类定义几何元素的结构和操作集合元素的函数 1. 数据类型 CGFloat: 浮点值的基本类型 CGPoint: 表示一个二维坐标系中的点 CGSize: 表示一个矩形的宽度和高度 ...

  7. 导入DXF文件

    1.选择菜单“File-Import-DXF”. 2.设置DXF文件参数.DXF file:选择DXF结构文件,单位,要和DXF源文件的单位一致.在DXF file中选择文件后,下方的Layer co ...

  8. 利用Formdata实现form提交文件上传不跳转页面

    作者:幻月九十链接:https://www.zhihu.com/question/19631256/answer/119911045来源:知乎著作权归作者所有,转载请联系作者获得授权. $('form ...

  9. Magicodes.WeiChat——后台JS框架封装

    Magicodes.WeiChat同时也致力于提高后台开发效率,因此对在后台前端这块也做了一定的封装.我们先来说说主要的框架JS——mwc.js和mwc_elements.js.这两个JS文件位于Sc ...

  10. Dynamic CRM 2013学习笔记(二十五)JS调用web service 实现多条记录复制(克隆)功能

    前面介绍过如何克隆一条当前的记录: Dynamic CRM 2013学习笔记(十四)复制/克隆记录 , 主要是通过界面上加一个字段,单击form上的clone 按钮时,改变这个字段的值以触发插件来实现 ...