Swift学习之类和结构体的创建
随着一步步的学习,学习到的新知识越来越多了,不管是新的还是旧的,都禁不住时间的堆积,再熟悉的知识点时间久了都会渐渐的忘记,也许这就是人们生活中一种潜在的惰性吧,看似非常熟悉的东西,等到真正要用的时候,却拿不出手来,总是似懂非懂的,所以无论知识点多么多,过的时间多久,我们都要经常拿出来练习下,以免忘记.这些对于我们来说都是非常重要的,有的人会认为我记性非常好,写一遍都可以记住,但是真的是这样吗,所话说的好,好记性不如烂笔头,说的就是那些好吃懒做的人,所以我希望大家都可以多动手,经常练习我们所学过的知识,让他真正的牢记于心!
下面就为大家讲解下今天所学习的知识点吧,那就是类和结构体:
类是用关键字 class来表示的, 结构体是用struct来表示的,下面附上具体代码:
class SomeClass { } struct Length {
//在Swift中可以对变量初始化
var start : Float = 0.0
var end : Float = 0.0
//在Swift中可以定义方法
func calLength() {
println(self.end - self.start)
}
}
//调用了默认的构造器 init
var length = Length()
//点语法访问元素
length.start = 7.0
length.end = 3.0
length.calLength() // 逐一构造器 , 只有结构体才有的, 类是没有的
var len = Length(start: 3.0, end: 9.9)
以上跟OC中有点相似,可以通过点语法访问元素变量。
下面再附上具体示例:
func calLength(length: Length) {
println(length.start - length.end)
} calLength(length)
这个是用来计算点之间的距离的。
除此之外我们今天还学习了计算类型,不是直接存值,而是系统提供了一个getter方法来获取值,并且还提供了一个setter方法来设置新的值具体示例如下
struct Rect {
var origin = Pointed()
var Rect = hah()
var center : Pointed {
get{
let centerX = self.origin.x + self.Rect.width / 2.0
let centerY = self.origin.y + self.Rect.height /
return Pointed(x: centerX, y: centerY)
}
set(newCenter){
origin.x = newCenter.x - self.Rect.width /
origin.y = newCenter.y - self.Rect.height /
}
}
//使用mutating关键字来修饰 作用:可以修改属性的值
mutating func calCenter() {
// return Pointed(x: self.origin.x + self.Rect.width / 2.0, y: self.origin.y + self.Rect.height / 2.0)
self.center = Pointed(x: self.origin.x + self.Rect.width / , y: self.Rect.height / + self.origin.y)
}
} var rect = Rect(origin: Pointed(x: , y: ), Rect: hah(width: , height: ))
rect.calCenter() var rect1 = Rect()
rect1.origin.x =
rect1.origin.y =
rect1.Rect.height =
rect1.Rect.width =
rect1.center
rect1.center = Pointed(x: , y: )
rect1.origin
通过mutating关键字可以进行属性值得修改。
类跟结构体的选择:
按照通用的准则:当符合一下其中一条或者多条条件的时候,请考虑使用结构体
1.结构体大的使用目的:用来封装尽量少得简单数据
2.结构体拷贝的时候,属于值得拷贝
3.任何在结构体重存储的值类型属性,都会被拷贝,而不是引用
4.结构体无需要去继承另一个已存在的类型的属性或者行为
虽然今天讲的不是很多吧,更多的是回顾以前所学习的知识点,虽然算不上是大牛吧,但是还是希望可以和友友们多进行交流,不管是技术上,还是什么,都希望可以从中得到提高,所以希望大家都不吝赐教了,最后为大家附上本堂课的一个练习题,题目是这样的:定义一个Student的结构体, name,age作为属性, 构造方法(对name,age赋初值),实例方法(pringStuInfo),类方法(printStuSorry)。下面便是详细代码了:
struct Student {
static var name = "小花"
static var age = 0.0
static func printStuSorry() {
println("ByeBye")
}
func pringStuInfo() {
println("哈哈, 你错了")
}
} Student.name = "网吧"
Student.name
Student.printStuSorry()
var stu = Student()
stu.pringStuInfo() struct Student1 {
var name : String?
var age : Int? init() {
self.name = "老王"
self.age =
}
init (name:String, age:Int) {
self.name = name
self.age = age
}
func printStuInfo() {
//字符串输出:""
println("name = \(self.name!) age = \(self.age!)") println("小李子 = \(self.name!) age = \(self.age!)")
}
mutating func changeName(newName: String) {
self.name! = newName
} static func printStuSorry() {
println("我粗了~×")
}
} var Stu2 = Student1()
Stu2.changeName("乔明")
Stu2.printStuInfo()
Student.printStuSorry() class Teacher {
var name : String?
var age : Int?
init() {
self.name = "老李"
self.age =
}
init(name: String, age: Int) {
self.name = name
self.age = age
} func printTeachInfo() {
println("name = \(self.name!), age = \(self.age!)")
} class func printTeachSorry() {
println("错了错了")
}
} var stu3 = Teacher()
stu3.printTeachInfo()
Teacher.printTeachSorry()
好了今天就到这里了,由于今天所学习的东西并不是很多,所以今天就不说那么多了,明天我们就要学习UI部分了,虽然以前也学习过,但是这次是要用一种新的语言来写的,想必大家多多少少都会知道点的吧,所以在明天的博客中,还望大家多提意见了,加油加油!
Swift学习之类和结构体的创建的更多相关文章
- 站在OC的基础上快速理解Swift的类与结构体
阅读此文章前,您已经有一定的Object-C语法基础了!) 2014年,Apple推出了Swift,最近开始应用到实际的项目中. 首先我发现在编写Swift代码的时候,经常会遇到Xcode不能提示,卡 ...
- Swift学习——A Swift Tour 枚举和结构体
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zhenyu5211314/article/details/28588095 Enumerations ...
- swift 的枚举、结构体、类
一.Swift的枚举 枚举是一系相关联的值定义的一个公共的组类型,同时能够让你在编程的时候在类型安全的情况下去使用这些值.Swift中的枚举比OC中的枚举强大得多, 因为Swift中的枚举是一等类型, ...
- Swift - 2 (?和!、结构体、类、协议、扩展、闭包)
1> 可选类型(?)和强制解包(!) 在swift中,可选类型(?) 其根源是一个 枚举型,里面有 None 和 Some 两种类型.其实所谓的 nil 就是 Optional.None , 非 ...
- Swift 的类、结构体、枚举等的构造过程Initialization(下)
类的继承和构造过程 类里面的全部存储型属性--包含全部继承自父类的属性--都必须在构造过程中设置初始值. Swift 提供了两种类型的类构造器来确保全部类实例中存储型属性都能获得初始值,它们各自是指定 ...
- swift 第十一课 结构体定义model类
结构体是可以作为 model 类使用的不过也要 写下的创建方法 import UIKit/***创建一个model 结构,重写init 方法,结构体的属性不能出现可选类型**/ struct Mode ...
- ucos实时操作系统学习笔记——内核结构和任务创建
对于ucos实时操作系统,邵贝贝的那本书已经写得很详细了,我因为之前不深的研究过ucos,所以在这里做一个笔记,写一些个人对该操作系统的理解,仅仅是个人理解,如果有人看到这边随笔有不对的地方,望给我指 ...
- iOS学习06C语言结构体
1.结构体的概述 在C语言中,结构体(struct)指的是一种数据结构,是C语言中构造类型的其中之一. 在实际应用中,我们通常需要由不同类型的数据来构成一个整体,比如学生这个整体可以由姓名.年龄.身高 ...
- C#学习笔记之结构体
1.概述 结构是一种与类相似的数据类型,不过它较类更为轻量,一般适用于表示类似Point.Rectangle.Color的对象.基本上结构能办到的类全都能办到,但在某些情况下使用结构更为合适,后面会有 ...
随机推荐
- ORACLE查看数据文件-控制文件-日志文件-表空间信息
1.查看当前数据库中的所有用户:select username from dba_users; 2.查看当前会话登录的用户:show user或select username from user_us ...
- python - 类的字段
一.静态字段:保存在类里面 1.创建静态字段: class Foo: CC = 123 # 字段(静态字段),保存在类里 def __init__(self): self.name = 'alex' ...
- (转)单例模式(Singleton)
首先来明确一个问题,那就是在某些情况下,有些对象,我们只需要一个就可以了, 比如,一台计算机上可以连好几个打印机,但是这个计算机上的打印程序只能有一个, 这里就可以通过单例模式来避免两个打印作业同时输 ...
- .net 开发定时执行的windows服务
环境:win7+vs2010+Oracle11g+office2010(64位操作系统) 需求:开发定时执行的windows服务从数据库中查询数据下载到指定地址Excel中 一.添加新建项目——win ...
- txt 分割程序
网上有很多 分割程序 ,但是他们都没有满足实际的用户要求 ,大家当然是希望看文章小说 一章节一章节的看 并非是那些传统意义上的按照文件的大小切割 所以 我特写本文研究下 这个简单的算法该怎样设计 说白 ...
- No1_5.字符串的基本操作_Java学习笔记
import java.text.DecimalFormat; import java.text.NumberFormat; import java.util.Locale; import java. ...
- 转载:js实现上传图片时 点击浏览后 就可以看到缩略图 很实用
转载网址:http://blog.sina.com.cn/s/blog_6094f04d0100o6kj.html <!DOCTYPE html PUBLIC "-//W3C//DTD ...
- phpmyadmin开启远程服务器连接
1.修改 braries/config.default.php,将 $cfg['AllowArbitraryServer'] 的值由 false 改成 true. 2.有其他需求的也可以自己在这里修 ...
- python学习第四天 --字符编码 与格式化及其字符串切片
字符编码 与格式化 第三天已经知道了字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采 ...
- 完美解决ListView 与 ScrollView 共存问题
1:首先设置ListView的高度,在setAdapter之后调用此方法. public static void setListViewHeightBasedOnChildren(ListView l ...