结构体(struct
)不仅能够有元组类似的数据存储功能,而且能够给结构体定义函数(是元组tuple
话,只能定义非成员函数来实现)
//: Playground - noun: a place where people can play
import UIKit
var str = "Hello, playground"
//name types
//struct class -valueType
let centerx = 100.0
let centery = 100.0
let distabce = 200.0
func intrange(x:Double , y:Double) -> Bool {
let distx = x-centerx
let disty = y-centery
let dist = sqrt(pow(distx, 2)+pow(disty, 2))
return dist<distabce
}
intrange(100, y: 200)
intrange(100, y: 500)
//初始化一个struct
struct Location {
var x : Double
var y : Double
//自定义的init
init(stringPoint:String){
let xy = stringPoint.characters.split(",")
x = atof(String(xy.first!))
y = atof(String(xy.last!))
}
init(x:Double,y:Double){
self.x = x
self.y = y
}
mutating func moveHori(dist :Double) {
self.x += dist
}
}
//第一种
var poina = Location(x :100, y:200)
//第二种
var pointB = Location(stringPoint: "100,200")
poina.x
poina.y = 500.0
func intrange2(point: Location) -> Bool {
let distx = point.x-centerx
let disty = point.y-centery
let dist = sqrt(pow(distx, 2)+pow(disty, 2))
return dist<distabce
}
intrange2(poina)
//struts 方法
func moveH(dist :Double, inout point: Location) {
point.x += dist
}
moveH(100, point: &poina)
poina.moveHori(100.0)
//extension struct
extension Location{
mutating func moveVer(dist: Double){
self.y += dist
}
}
poina.moveVer(100)
//扩展string方法
extension String{
func isOushu() -> Bool {
return self.characters.count%2 == 0 ?true:false
}
}
"swift is good language".isOushu()