//结构体是一个值类型
struct location{
//属性
var x:Double
var y:Double
//方法
func test() {
print("结构体中的test函数")
}
mutating func moveH(distance:Double){
self.x+=distance
}
//结构体扩充构造函数
//默认情况下,系统会为一个结构体生成一个默认的构造函数
//构造函数是以init开头的,并且构造函数不需要返回值
//在构造函数结束时候,必须保证所有的成员属性有被初始化
//这是系统默认构造的
// init(x:Double,y:Double) {
// self.x=x
// self.y=y
// }
init(xyStr:String) {
let array = xyStr.components(separatedBy: ",")
let item1 = array[0]
let item2 = array[1]
// if let x=Double(item1) {
// self.x=x
// }
//
// if let y=Double(item2) {
// self.y=y
// }
self.x=Double(item1) ?? 0
self.y=Double(item2) ?? 0
}
}
//创建结构体对应的值
//var center=location(x: 20, y: 20) //调用系统默认的构造函数
var center=location(xyStr: "20,20")
center.test()
center.moveH(distance: 10)//水平移动10
print(center)//结构体属性变化结果 location(x: 30.0, y: 20.0)