//
// main.swift
// Struct-Demo-05
// import Foundation println("结构体測试!")
//结构体和C语言的结构体不同
//swift结构体能够带函数/C++
struct QHTest {
var x = 0;//定义一个结构体 x y
var y = 0;//0是初值
//定义结构体的构造函数
init(){//真正的构造函数
//定义一个空的构造函数, 构造函数是以init开头的 自己主动调用
//oc alloc init] 这个须要我们主动调用
NSLog("in init");
}
//构造函数參数,那么以后带上參数。必须携程QHTest(x:100,y:200);
init(x:Int,y:Int)
{
//定义了带有两个參数的构造函数
self.x = x;
self.y = y;
NSLog("in init(x:y)");
} //_ underscore 这个能够让调用的时候不用写x:
// x: y: 这个就是label oc/label
init(_ x:Int,_ y :Int)
{
self.x = x;
self.y = y;
} //可是结构体没有析构函数。和面向对象有点不同
func getCenter()->Int{
return (x+y)/2;
}
//给现有的点x,y加上delta
//在调用的时候
//obj.addOffset(100,deltaY:200);
mutating func addOffset(deltaX:Int,deltaY:Int){ //由于结构体是一个拷贝的对象(是一个引用)
//函数内部是不能改动变量的
//mutating 是能够让函数改动里面的变量
x += deltaX;
y += deltaY;
}
}; func testStructure(){
//定义一个结构体
//结构体的定义是 结构体的名字()
var s = QHTest(x:100,y:200);
println("s.x = \(s.x) s.y = \(s.y)"); var s2 = QHTest(); s2.x = 111;
s2.y = 222;
println("s2.x = \(s2.x) s2.y = \(s2.y)");
//这样的构造函数和我们c++ java相似了
var s3 = QHTest(333,444);
println("s3.x = \(s3.x) s3.y = \(s3.y)"); s3.x = 600;
let c = s3.getCenter();
println("c is \(c)"); s3.addOffset(100, deltaY: 200);
println("s3.x = \(s3.x) s3.y = \(s3.y)");
}
testStructure();

最新文章

  1. Terminology: Sandbox
  2. javaScript AJAX
  3. PHP面向对象编程知识要点
  4. MVC 中aspx的增删改查
  5. CentOS 下安装翻译软件星际译 StarDict
  6. CSUFT 1004 This is Halloween: Saving Money
  7. 碰到sshd连接不上linux时的解决办法
  8. liferay MVCActionCommand的用法及例子
  9. 03 - Oracle文件概述
  10. bjfu1277 简单递归
  11. [Java Code] 时间维度循环生成代码片段
  12. android脚步---使用framelayout实现霓虹灯效果
  13. jvm 配置,看看
  14. 抓取QQ空间相册
  15. 存储容量和IOPS的关系
  16. DDD实战进阶第一波(一):开发一般业务的大健康行业直销系统(概述)
  17. keras神经网络做简单的回归问题
  18. 【原】git常用命令笔记
  19. 开源医学图像处理平台NiftyNet介绍
  20. Codeforces Round #516 (Div. 2, by Moscow Team Olympiad) D. Labyrinth(重识搜索)

热门文章

  1. spring mvc获取路径参数的几种方式
  2. Android setBackgroundResource和setBackgroundDrawable和用法
  3. sql中的 SET QUOTED_IDENTIFIER OFF、SET ANSI_NULLS ON
  4. css3 scale的用法例子
  5. WebAssembly学习(五):AssemblyScript - Hello World
  6. C++入门之HelloWorld
  7. cp---复制文件
  8. 二进制部署mysql5.6
  9. MYSQL去重复并计算总数的sql语句
  10. springboot 前后端分离开发解决跨域访问