前面主要是介绍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. secure erase 时必须umount

    不umont就进行secure erase,仍然会执行成功,但是ssd确没有被清0,使用hexdump可以验证. 但是secure erase 命令却返回成功,造成误解以为已经擦除成功. 所以,sec ...

  2. java读取属性文件propertie中文乱码问题

    在属性文件中使用Unicode编码中文 propertie文件默认编辑就是Unicode编码

  3. 【Java学习笔记】<集合框架>定义功能去除ArrayList中的重复元素

    import java.util.ArrayList; import java.util.Iterator; import cn.itcast.p1.bean.Person; public class ...

  4. Mono for android真难用

    最近要写个Android小项目,真的很少,几个按钮发送tcp或udp而已. 作为.net程序员当前是c#当先,Mono for android真是好,直接用c#一切都是那么熟悉,但发布时问题来了,需几 ...

  5. windows小技巧 从文件夹直接打开命令行位置

    windows下从命令行打开某个目录下的东东时,会一直cd  ~~~~,更简单的是: 直接用鼠标找到该文件夹或者文件,按住Shift键然后点击鼠标右键,选择"在此处打开命令行"即可 ...

  6. 第三天:JS事件详解-事件流

    学习来源: F:\新建文件夹 (2)\HTML5开发\HTML5开发\04.JavaScript基础\6.JavaScript事件详解 学习内容:  1)基础概念 2)举例说明: 代码如上,如果用事件 ...

  7. 微软分布式框架Orleans开源了

    开源地址: https://github.com/dotnet/orleans 昨天编译了一下,这个最新的Orleans安装程序(用github源码编译的) 下载地址:http://pan.baidu ...

  8. 大熊君说说JS与设计模式之------命令模式Command

    一,总体概要 1,笔者浅谈 日常生活中,我们在看电视的时候,通过遥控器选择我们喜欢的频道时,此时我们就是客户端的角色,遥控器的按钮相当于客户请求,而具体执行的对象就是命令对象, 命令模式把一个请求或者 ...

  9. AutoMapper中的Map和DynamicMap——高手注重细节,思考和总结

    近日在做项目的时候,遇到了个怪问题,关于AutoMapper的细节问题,也是不为一般人所关注的. 本人研究AutoMapper也没有多长时间,而且研究的过程中也写了关于AutoMapper的系列基础教 ...

  10. C语言 线性表 顺序表结构 实现

    一个能够自动扩容的顺序表 ArrList (GCC编译). #include <stdio.h> #include <stdlib.h> #include <string ...