//定义结构体理解为定义一种类型
struct Point{
var x,y:Double
}
struct Size {
var width, height: Double
}
struct Rect1{
var origin: Point
var size: Size
}
//初始化(方法是系统自带的);也可以有自定义的初始化方法
var point1=Point(x:11.1,y:222)
var xxx=point1.x
//结构体可以带算值属性,属性观察
//可以内置方法
struct Rect2{
var origin: Point //可定义为结构体类型
var size: Size
var area: Double{
get{
return 10//size.width * size.height
}
set(newRect){//使用别名newRect代替newValue
size.height = newRect / size.height
println("新值=\(size.height)")
}
}
func isBiggerThanRect(other: Rect2)->Bool{
return self.area > other.area
}
}
//扩展结构体Rect2
extension Rect2 {
var 计算1: Double{
return size.height * size.width
}
mutating func increaseByFactor(factor: Double) {
size.height *= factor
size.width *= factor
}
}
var varrect1 = Rect2(origin: Point(x: 0, y: 0), size: Size(width: 10, height: 5))
varrect1.area
varrect1.area = 100
varrect1.increaseByFactor(10.0)
varrect1.size.height
varrect1.计算1
//结构体和类的区别:
//1、结构体不能继承 2、结构体是值传递(会复制对象),类是引用传递(传递对象的地址)
//结构体内部值的修改-用关键字mutating
struct Point3{
var x,y: Double
func printmethod()-> String{
return "ABC"
}
mutating func moveToTheRightBy(dx: Double){
x += dx
}
}
//定义为结构体变量才能修改内部值
var p3 = Point3(x: 0.0, y: 0.0)
p3.moveToTheRightBy(100)
p3.printmethod()
//定义为结构体常量不能修改内部值