Swift_类和结构体
Swift_类和结构体
struct Resolution {
var width = 0
var height = 0
}
class VideoMode {
var resolution = Resolution()
var interlaced = false
var frameRate = 0.0
var name: String?
}
///类和结构体
class ClassesStructures: NSObject {
func test() {
// self.testClassStruct() // 类和结构体
// self.testStructuresAndEnumerationsAreValueTypes() // 结构体和枚举是值类型
// self.testClassesAreReferenceTypes() // 类是引用类型
// self.testIdentityOperators() // 恒等算子
}
//类和结构体测试
func testClassStruct() {
//初始化
let someResolution = Resolution()
let someVideoMode = VideoMode()
//访问属性
print("someResolution.width:\(someResolution.width)")
print("someVideoMode.resolution.width:\(someVideoMode.resolution.width)")
someVideoMode.resolution.width = 1280
print("someVideoMode.resolution.width:\(someVideoMode.resolution.width)")
//通过成员初始化结构体
let vga = Resolution(width: 640, height: 480)
print(vga)
/* print
someResolution.width:0
someVideoMode.resolution.width:0
someVideoMode.resolution.width:1280
Resolution(width: 640, height: 480)
*/
}
//结构体和枚举是值类型
func testStructuresAndEnumerationsAreValueTypes() {
//结构体测试
let hd = Resolution(width: 1920, height: 1080)
var cinema = hd
cinema.width = 2048 //改变cinema的值 不会改变hd中的值
print("cinema.width:\(cinema.width)")
print("hd.width:\(hd.width)")
//枚举测试
enum CompassPoint {
case north, south, east, west
}
var currentDirection = CompassPoint.west
let rememberedDirection = currentDirection
//改变currentDirection rememberedDirection的值不会变化
currentDirection = .east
print("\(rememberedDirection)")
/* print
cinema.width:2048
hd.width:1920
west
*/
}
//类是引用类型
func testClassesAreReferenceTypes() {
let tenEighty = VideoMode()
tenEighty.frameRate = 25.0
// 引用tenEighty到alsoTenEighty 并改变alsoTenEighty中的值
let alsoTenEighty = tenEighty
alsoTenEighty.frameRate = 30.0
print("tenEighty.frameRate:\(tenEighty.frameRate)")
/* print
tenEighty.frameRate:30.0
*/
}
//恒等算子
func testIdentityOperators() {
//恒等算子是===或!==
let tenEighty = VideoMode()
let alsoTenEighty = tenEighty
if tenEighty === alsoTenEighty {
print("相同实例")
}
/* print
相同实例
*/
}
}
Swift_类和结构体的更多相关文章
- C#基础回顾(二)—页面值传递、重载与重写、类与结构体、装箱与拆箱
一.前言 -孤独的路上有梦想作伴,乘风破浪- 二.页面值传递 (1)C#各页面之间可以进行数据的交换和传递,页面之间可根据获取的数据,进行各自的操作(跳转.计算等操作).为了实现多种方式的数据传递,C ...
- swift学习笔记3——类、结构体、枚举
之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...
- Swift3.0P1 语法指南——类和结构体
原档:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programmi ...
- 【Swift学习】Swift编程之旅---类和结构体(十三)
与其他编程语言所不同的是,Swift 并不要求你为自定义类和结构去创建独立的接口和实现文件.你所要做的是在一个单一文件中定义一个类或者结构体,系统将会自动生成面向其它代码的外部接口. 注意:通常一个类 ...
- swift学习笔记之-类和结构体
//类和结构体 import UIKit //类和结构体 /* 1.枚举enum.结构体struct和String.Array.Dictionary类型,都属于值传递类型,被赋值给新的常量或变量时传递 ...
- swift 类和结构体
1:类和结构体定义 类和结构体分别通过关键字class 和struct定义. swift的编码风格是类class和结构体struct名字使用大写字母开头的匈牙利表示法,相反的.类的方法和属性则用小写字 ...
- Swift面向对象基础(上)——Swift中的类和结构体(上)
学习来自<极客学院> import Foundation //1.定义类和结构体 /* [修饰符]calss 类名{ 零到多个构造器 零到多个属性 零到多个方法 零到多个下标 } 修饰符可 ...
- C#基础知识系列三(类和结构体、String和StringBuilder、equals和==)
前言 这一节主要来了解一下类和结构体之间的异同点.以及针对String和StringBuilder的用法.equals和==,其实可以看出很多地方都用到了上一节的值类型和引用类型.堆栈和装箱拆箱操作吧 ...
- swift 类 与 结构体
这两天突然有人问我 swift里面 类和 结构体 有什么区别? 说实在的本人目前不太看好swift,相信很多人也是,oc 都 很成熟了. 本人目前不打算深入了解swift的原因swift 语言 ...
随机推荐
- 洛谷P2831 愤怒的小鸟(状压dp)
题意 题目链接 Sol 这题....我样例没过就A了??..算了,就当是样例卡精度吧.. 直接状压dp一下,\(f[sta]\)表示干掉\(sta\)这个集合里面的鸟的最小操作数 转移的时候判断一下一 ...
- npm全局安装失效修复
一.windows下 先查看npm包的默认安装目录 npm config get prefix 修改配置 npm config set prefix "nodeJs的安装目录" 二 ...
- 08_zookeeper的客户端工具curator_watcher
[使用usingWatcher()] //两个usingWatcher的传入参数不同 public interface Watchable<T> { T watched(); T usin ...
- Python学习系列----第四章 函数
4.1 函数定义 函数是python中重要的工具.函数用关键字 def 来定义.def 关键字后跟一个函数的标识符名称,然后跟一对圆括号.圆括号之中可以包括一些变量名,该行以冒号结尾.接下来是一块 ...
- Python学习系列-----第二章 操作符与表达式
2.1 数学运算和赋值的简便方法 例如: 2.2 优先级 在python中运算符有优先级之分,高优先级的运算符先执行,低优先级的运算符后执行.下面是运算符优先级:(同一行的运算符具有相同的优先级) 2 ...
- ubuntu16.04下无法连接网络的bug
首先介绍下Bug的情况,这个bug纠缠我整整一天,在命令行下ifconfig能够看到ip地址,不过我的不是eth0,而是enps03,然后Ping 本机和ping 网关都能够 ping 通,但是sud ...
- 《C++ Primer Plus》读书笔记之——处理数据
本文旨在记录在阅读<C++ Primer Plus>第五版的过程中,一些重点的知识点,方便以后查阅.本文将不断更新...... 一.第三章 处理数据 1.无符号整型不能存储负数值,其优点是 ...
- 一道算法题-八皇后问题(C++实现)
八皇后问题 一.题意解析 国际象棋中的皇后,可以横向.纵向.斜向移动.如何在一个8X8的棋盘上放置8个皇后,使得任意两个皇后都不在同一条横线.竖线.斜线方向上?八皇后问题是一个古老的问题,于1848年 ...
- June 30th 2017 Week 26th Friday
Love me little and love me long. 不求情意浓,但愿情意久. Some people say beautiful young people are the creatur ...
- PTA练习题之7-1 矩阵转置(10 分)
7-1 矩阵转置(10 分) 将一个3×3矩阵转置(即行和列互换). 输入格式: 在一行中输入9个小于100的整数,其间各以一个空格间隔. 输出格式: 输出3行3列的二维数组,每个数据输出占4列. 输 ...