Swift入门篇-结构体

前面主要是介绍swift语言中基本类型的用法,今天给大家介绍的是swift的结构体的用法,swift中结构体的用法和其他语言的用法,还有不太一样,不过您多敲几遍,就可以理解结构体,结构体在ios开发中是灰常重要的一部分,如果您很好的掌握结构体,在后面ios开发中,会理解的更加清楚。

一:结构体声明

格式:

struct  结构体名 {

}

说明:

1: struct  是定义结构体的关键字

例子

/*

1:struct 是结构体的关键字

2:student 结构体名称

3:student()  创建一个结构体变量
*/

struct  student {

}

var stu = student () //student() 表示创建一个结构体变量

二 :结构体声明 字段

定义结构体字段2种方法

 struct  结构体名 {

 第一种直接定义字段名 并且给字段名赋初始值

    var 或 let  字段名 = 初始化值

 第二种定义字段名并且指定字段类型

    var 或 let  字段名:类型

}

例子

struct  student {

    var  age = 0 //直接定义一个字段名称,并且给字段名赋初始值

    var  name:String // 直接定义一个字符串字段name。

}

三 :结构体声明 字段的访问

一: 创建结构体变量,结构体的字段都必须有初始值,否则会报错

二: 结构体内部 只有在构造函数(init)中修改字段的值,在结构体内部中方法和属性内不能直接修改结构体内部字段的值。
三: 在结构体外部,结构体变量,可以访问结构体字段,也可以修改结构体字段的值。

①:构造函数给结构体字段 赋初始值

  说明:
    1: swift语言中指定结构体构造函数,是init方法

    2:init执行方法,在创建结构体变量之前执行

    3:在创建结构体题变量的参数必须和构造函数init 参数必须一致。

②:创建结构体变量赋初始值

    在创建结构体变量,并且直接赋值给字段,其中注意点 赋初始值的顺序必须和声明结构体的顺序一致。

例子

无参构造函数

struct  student {

    var  age = 0 //直接定义一个字段名称,并且赋初始值

    var  name:String // 直接定义一个字符串变量。

    //定义 无参数构造函数
    init() {
        name = "zs"
        age = 1
    }

}
/*1: student () 创建一个结构体变量 ,系统会自动调用构造函数init()
*/
var stu = student () 
println("name=\(stu.name),age=\(stu.age)") 运行结果 name=zs,age=1

有参数构造函数

struct  student {

    var  age = 0 //直接定义一个字段名称,并且赋初始值

    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:12)  //因为构造函数有2个参数,所对应创建结构体的变量的参数要一致
println("name=\(stu.name),age=\(stu.age)")

运行结构

name=ls,age=12
有参数构造函数 参数变量加 _ 用法
1:  创建结构体的对象中对应参数必须和构造函数对应的参数一致

2: 如果构造函数中参数变量前加 _ 其对应创建对象的参数,不需要变量名
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 = 0  //直接定义一个字段名称,并且赋初始值

    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:12,name:"甘超波")

println("name=\(stu.name),age=\(stu.age)")

运行结果

name=甘超波,age=12

结构体 方法

  1:结构体中可以直接存储方法

 注意点: 结构体中方法不能直接修改字段的值,否则会报错

例子

struct  student {

    var  age = 0  //直接定义一个字段名称,并且赋初始值

    //定义结构体方法
    func GetAge() ->Int{
        return age
    }

}

/*
注意点: 结构体中方法不能直接修改字段的值,否则会报错
*/

var stu = student()
stu.age = 12

println(stu.age)

运行结果

12

结构体属性

属性 主要是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入门篇-结构体,布布扣,bubuko.com

时间: 2024-10-04 10:10:04

Swift入门篇-结构体的相关文章

swift——类和结构体对比

Swift 中类和结构体有很多共同点.共同处在于: ?       定义属性用于储存值 ?       定义方法用于提供功能 ?       定义下标用于通过下标语法访问值 ?       定义初始化器用于生成初始化值 ?       通过扩展以增加默认实现的功能 ?       符合协议以对某类提供标准功能 更多信息请参见属性,方法,下标,初始过程,扩展,和协议. 与结构体相比,类还有如下的附加功能: ?       继承允许一个类继承另一个类的特征 ?       类型转换允许在运行时检查和

Swift中类和结构体

1. 类和结构体对比 Swift 中类和结构体有很多共同点: 定义属性用于存储值 定义方法用于提供功能 定义附属脚本用于访问值 定义构造器用于生成初始化值 通过扩展以增加默认实现的功能 符合协议以对某类提供标准功能 与结构体相比,类还有如下的附加功能: 继承允许一个类继承另一个类的特征 类型转换允许在运行时检查和解释一个类实例的类型 解构器允许一个类实例释放任何其所被分配的资源 引用计数允许对一个类的多次引用 2. 类和结构体的定义语法 类和结构体有着类似的定义方式.我们通过关键字class和s

swift入门篇-函数

今天给大家介绍 swift函数,swift函数和c#,js的写法大致一直,但是与object-c写法有很大不同点.废话不多说,直接开始了. 1:函数  --常量参数 func 函数名( 参数变量:类型 ,参数变量:类型...){} 说明: 1: func 是函数关键字 2:{} 函数体 3: 参数变量是默认常量类型,不能在函数函数体里面直接修改 即 func A (value:String)  与 func A (let value:String)写法是相同的,即value 是常量. 例子 /*

Swift入门篇-集合

一:数组 一:可变数组 定义:数组使用有序列表存储相同类型的多重数据. 格式: 第一种格式 var 变量: 类型[] = [变量值,变量值,...] 第二种格式 var 变量 =[变量值,变量值,...] 说明: 1:[变量值,变量值...] 这样表示数组 ,前提是 变量值的类型必须一值.(和其他语言有所不同) 2:上面两种格式都是定义一个数组,数组中的变量值的类型必须一致 3:第一种格式定义的数组,是直接定义数组,第二种格式定义的数组 是编译器通过类型值推导出是数组格式 注意点 1:常量关键字

Swift入门篇-Hello World

提示:如果您使用手机和平板电脑看到这篇文章,您请在WIFI的环境下阅读,里面有很多图片, 会浪费很多流量. 博主语文一直都不好(如有什么错别字,请您在下评论)望您谅解,没有上过什么学的 最近这2天主要升级系统和升级开发工具和去啃苹果开发文档,也时常关注一些写swift的文章.自己也边学swift,边做了一些小例子玩.个人感觉语法精炼,用起来还是很爽的. 但是个人觉得开发工具还是有很多不足(如自动提示有时候不出现),希望苹果在发布正式版的时候能修复的更好一点,在后面我会把我犯错的经历写下来. 今天

Swift入门篇-基本类型(1)

博主语文一直都不好(如有什么错别字,请您在下评论)望您谅解,没有上过什么学的 今天遇到了一个很烦的事情是,早上10点钟打开电脑,一直都进入系统(我的系统  mac OS X Yosemite 10.10 系统),一直卡在登陆界面上进不去,心里想苹果新系统这么脆弱,现在很多软件不兼容就算了,搞的我还进不了系统,真是郁闷.然后在google 上搜索,google也打不开(真是悲催, 据说"组织" 要开会,大家先不要用google).然后用"度娘"搜索,搜了半天,终于找到

Swift入门篇-基本类型(3)

一:元组 格式 变量或常量关键字 元组变量 = ( 变量,变量, -) 说明: 1: 元组变量还是一个变量,只不过表现方式和其他变量不一样 2:()括号里面可以放入N个变量组成 例子: import Foundation /* A是元组变量,()里面放着 整形 和字符串 元组类型为 整形和字符串 组成 */ var A = (1,"swift")//元组变量A 由 整形和字符串 组成 println(A) 运行结果 (1, swift) mport Foundation var B =

Swift入门篇-闭包和函数

今天主要是给大家分享的是 swift中闭包的用法,我个人觉得闭包就是函数的简写方法,如果您函数不是很熟悉请查阅 swift入门篇-函数 1:函数类型 函数类型 var 变量 :(类型)->返回值 =函数名 说明: 1:函数名 表示函数地址 2:(类型)->返回值 表示函数类型 3:函数类型必须和函数名的参数和返回值一致 例子 /* 1:func 是函数关键字 2:Say是函数名,表示函数的地址 3:Say函数 参数是整形 返回值为布尔类型 */ func Say(num:Int)->Bo

Swift类与结构体

类和结构体有很多共性: 定义属性存储数据 定义方法执行功能处理 定义下标,通过下标访问他们的值 初始化他们的状态 通过扩展(Extension)扩展其功能 遵守协议(Protocol),协议提供一种特定的标准 功能 类比结构体多出的功能: 能够继承另外一个类 能够核对运行期对象的类型 析构对象释放资源 引用计数允许一个类实例有多个引用 类和结构体的定义 定义类和结构体: [html] view plaincopy class SomeClass { // class definition goe