Swift-類

  1. 類的初探
class Person {
    
    let firstName: String
    let lastName: String
    var career: String?
    
    init(firstName: String, lastName: String, career: String) {
        self.firstName = firstName
        self.lastName = lastName
        self.career = career
    }
    
    init(firstName: String, lastName: String) {
        self.firstName = firstName
        self.lastName = lastName
    }
    
    func fullName() -> String {
        return firstName + " " + lastName
    }
}

let person = Person(firstName: "qin", lastName: "zhen", career: "programmer")
person.fullName()
  1. 添加一個(gè)新的方法(方法可以改變對(duì)象的值)
func setNewCareer(newCareer: String) {
        self.career = newCareer
    }
//對(duì)于引用類型而言,變量的實(shí)例是一個(gè)常量的話冷离,依然可以修改定義在類中可變量的值,且可以通過(guò)方法直接修改實(shí)例本身
person.setNewCareer(newCareer: "freelancer") //不報(bào)錯(cuò)
  1. 引用類型對(duì)比值類型
// 方法前不加mutating關(guān)鍵字會(huì)報(bào)錯(cuò)
//類比結(jié)構(gòu)體
struct Location {
    var x: Int = 0
    var y: Int = 0
    
    mutating func goEast(){
        self.x += 1 //如果不加mutating則報(bào)錯(cuò)扬霜,x不可修改
    }
}
var location = Location()
location.goEast()

//類比枚舉
enum Switch {
    case On
    case Off
    
    mutating func click() {
        switch self {
        case .On:
            self = .Off
        case .Off:
            self = .On
        }
    }
}
var button = Switch.Off
button.click()
  1. 引用類型的比較
let person1 = Person(firstName: "qin", lastName: "zhen", career: "programmer")
let person2 = person

//person2 == person1 //報(bào)錯(cuò)
person2 === person1 //true芬膝,判斷兩個(gè)對(duì)象是否指向同一塊內(nèi)存空間,符號(hào)適用于引用類型

let person3 = Person(firstName: "qin", lastName: "zhen", career: "programmer")

person3 === person1 //false篮迎,person1和person3分別指向兩塊不同的內(nèi)存空間
person3 !== person1 //true
男图。
  1. 什么時(shí)候用結(jié)構(gòu)體示姿,什么時(shí)候用類
  1. 把結(jié)構(gòu)看作是值:位置(經(jīng)緯度)甜橱,坐標(biāo)(二維、三維坐標(biāo))栈戳,溫度等(棧)
  2. 把類看作是物體:人、車、商品瘟裸、動(dòng)物等 (堆)
  1. 計(jì)算型屬性
struct Point {
    
    var x = 0.0
    var y = 0.0
}

struct Size {
    
    var width = 0.0
    var height = 0.0
}

class Rectangle {
    
    var origin = Point()
    var size = Size()

    //計(jì)算型屬性必須聲明為var
    var center: Point {
        
        // getter和setter方法
        get {
            let centerX = origin.x + size.width / 2
            let centerY = origin.y + size.height / 2
            return Point(x: centerX, y: centerY)
        }
        
        set {
            origin.x = newValue.x - size.width / 2
            origin.y = newValue.y - size.height / 2
        }
    }
    
    init(origin: Point, size: Size) {
        self.origin = origin
        self.size = size
    }
    
    //如果只是取值,直接return即可
    var area: Double {
        return size.height * size.width
    }
}

var rec = Rectangle(origin: Point(), size: Size(width: 10, height: 10))

//使用get方法獲取屬性值
rec.center
//使用set方法修改center坐標(biāo)
rec.center = Point()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末乃戈,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子亩进,更是在濱河造成了極大的恐慌症虑,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件归薛,死亡現(xiàn)場(chǎng)離奇詭異谍憔,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)主籍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門习贫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人千元,你說(shuō)我怎么就攤上這事苫昌。” “怎么了幸海?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵祟身,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我涕烧,道長(zhǎng)月而,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任议纯,我火速辦了婚禮父款,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘瞻凤。我一直安慰自己憨攒,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布阀参。 她就那樣靜靜地躺著肝集,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蛛壳。 梳的紋絲不亂的頭發(fā)上杏瞻,一...
    開(kāi)封第一講書(shū)人閱讀 52,475評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音衙荐,去河邊找鬼捞挥。 笑死,一個(gè)胖子當(dāng)著我的面吹牛忧吟,可吹牛的內(nèi)容都是我干的砌函。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼讹俊!你這毒婦竟也來(lái)了垦沉?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤仍劈,失蹤者是張志新(化名)和其女友劉穎厕倍,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體贩疙,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡绑青,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了屋群。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片闸婴。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖芍躏,靈堂內(nèi)的尸體忽然破棺而出邪乍,到底是詐尸還是另有隱情,我是刑警寧澤对竣,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布庇楞,位于F島的核電站,受9級(jí)特大地震影響否纬,放射性物質(zhì)發(fā)生泄漏吕晌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一临燃、第九天 我趴在偏房一處隱蔽的房頂上張望睛驳。 院中可真熱鬧,春花似錦膜廊、人聲如沸乏沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蹬跃。三九已至,卻和暖如春铆铆,著一層夾襖步出監(jiān)牢的瞬間蝶缀,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工薄货, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留翁都,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓菲驴,卻偏偏與公主長(zhǎng)得像荐吵,于是被迫代替她去往敵國(guó)和親骑冗。 傳聞我的和親對(duì)象是個(gè)殘疾皇子赊瞬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361