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 相同实例 */
}
}

最新文章

  1. 如何围绕企业战略,建设BI驾驶舱?
  2. 命令行查看linux发行版版本信息
  3. Vue基础---->VueJS的使用(二)
  4. SAP财务凭证冲销
  5. (一)Windows下搭建PHP开发环境及相关注意事项
  6. 【转】Acm之java速成
  7. XMind常用快捷方式汇总
  8. Java中死锁的定位与修复
  9. 修改sql数据库名称
  10. 转载-YARN的内存和CPU配置
  11. Lua面向对象之三:其它一些尝试
  12. RPM安装MYSQL5.7
  13. Go语言学习笔记(2)
  14. 任务三十八:UI组件之排序表格
  15. Linux的基础优化-2
  16. 洛谷 P3071 [USACO13JAN]座位Seating-线段树区间合并(判断找,只需要最大前缀和最大后缀)+分治+贪心
  17. .NET的那些事儿(9)——C# 2.0 中用iTextSharp制作PDF(基础篇) .
  18. 【AHOI2013】差异
  19. 基础算法学习2-dp
  20. 慎用uniapp开发商业级应用

热门文章

  1. iview框架下,modal内容过长,select选项位置不对
  2. Spring 框架(一)
  3. C++基础--回调的应用
  4. JNLP文件具体说明编辑
  5. javascript 时间日期处理相加,减操作方法js
  6. ASP.NET 4.5 MVC 4 无法在Windows2008的IIS7.0上解决方案
  7. 【Leetcode】【Medium】Gray Code
  8. 一个典型的后台软件系统的设计复盘——(三)打通任督二脉-context
  9. TIA Portal 和 scout 之间的驱动器地址分配
  10. hosts配置