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名字使用大写字母开头的匈牙利表示法,相反的.类的方法和属性则用小写字 ...
随机推荐
- [php-src]一个Php扩展的结构
内容均以php5.6.14为例. 要拥有一个PHP扩展的架子,使用源码中准备好的 /ext/ext_skel 工具,可以生成一个可运行的扩展骨架. 不加选项运行 ./ext_skel,可查看所有可用选 ...
- 如何断开所有SQL Server所有的连接
方法1: 执行以下脚本 01.declare @sql varchar(100) 02. 03.while 1=1 04.begin 05. 06.select top 1 ...
- NSCalenda日历类
1. //将数据库时间和当前时间相比,得出时间差. + (NSString *)dateDescriptionWithDate:(NSDate *)date{ // NSCalendar日历类,提供了 ...
- Java复数的四则运算
import java.util.Scanner; import com.sun.jndi.url.iiopname.iiopnameURLContextFactory; public cla ...
- JS-for中的i
var aBtn = document.getElementsByTagName('input'); for( var i=0; i<aBtn.length; i++ ){ ...
- 图层的核心动画(CABaseAnimation)
Main.storyboard // // ViewController.m // 7A14.图层的核心动画 // // Created by huan on 16/2/4. // Copyr ...
- 使用Notepad++编码编译时报错(已解决?)
使用Notepad++编码编译时报错(已解决?) 使用Notepad++编码,编译的时候经常会报错,说什么GBK编码啥啥啥~~~但同样的编码用ECLIPSE就没有问题.再有,用记事本把他保存成ANSI ...
- vim 空格 制表符
set tabstop=4 设定tab宽度为4个字符set shiftwidth=4 设定自动缩进为4个字符set expandtab 用space替代tab的输入 ...
- Android 开发必备
Android 开发必备 http://www.androiddevtools.cn/ 收集整理Android开发所需的Android SDK.开发中用到的工具.Android开发教程.Android ...
- C++堆栈生长方向
栈区:临时区 #include <iostream> using namespace std; #include <stdio.h> int main() { ; ; cout ...