swift 函數(shù)基本使用和類定義

基本函數(shù)使用

  • 1.沒(méi)有參數(shù)沒(méi)有返回值
//about函數(shù)名兔魂,Void為返回值
func about() -> Void {
    print("iPhone7s Plus")
}
//無(wú)返回值 省略寫法
func about1() {
    print("iPhone7s")
}
//調(diào)用
about()
  • 2.有參數(shù)沒(méi)有返回值
func callPhone(phoneNum : 
String) {
    print("打電話給\(phoneNum)")
}
//調(diào)用
callPhone("+86 110")
  • 3.沒(méi)有參數(shù)有返回值
func readMessage() -> String {
    return "吃飯了嗎?"
}
//調(diào)用
print(readMessage())
  • 4.有參數(shù)有返回值
func sum(num1 : Int, num2 : Int) -> Int {
    return num1 + num2
}
//調(diào)用
sum(20, num2: 30)

類的定義

1.類的定義
2.創(chuàng)建類對(duì)應(yīng)的對(duì)象
3.給類的屬性賦值
1> 直接賦值
2> 通過(guò)KVC賦值
4.可以重寫setValue(value: AnyObject?, forUndefinedKey key:,那么字典中沒(méi)有的字段可以在類中沒(méi)有對(duì)應(yīng)的屬性
5.override : 重寫, 如果寫的某一個(gè)方法是對(duì)父類的方法進(jìn)行的重寫,那么必須在該方法前加上override

  • 1.類的定義
//Person類種有個(gè)屬性age
class Person : NSObject {
    var age : Int = 0
}
//調(diào)用
let p = Person()
p.age = 20
//或者使用KVC賦值
p.setValuesForKeysWithDictionary(["age" : 18])
  • 重寫方法
class Person : NSObject {
    var age : Int = 0
    
    // override : 重寫, 如果寫的某一個(gè)方法是對(duì)父類的方法進(jìn)行的重寫,那么必須在該方法前加上override
    override func setValue(value: AnyObject?, forUndefinedKey key: String) {}
}
//調(diào)用  原本沒(méi)有name屬性癌瘾,通過(guò)重寫KVC
p.setValuesForKeysWithDictionary(["age" : 18, "name" : "why"])
  • 2.類中的屬性定義

nil算swift中的特殊類型,不可直接賦值所森,要使用可選類型

class Student: NSObject {
    // 定義屬性
    // 定義存儲(chǔ)屬性
    var age : Int = 0
    var name : String?  //var name : String? = nil
    
    var mathScore : Double = 0.0
    var chineseScore : Double = 0.0
    
    // 定義計(jì)算屬性: 通過(guò)別的方式計(jì)算到結(jié)果的屬性,稱之為計(jì)算屬性
//或者使用下面的 定義方法 返回平均值
    var averageScore : Double {
        return (mathScore + chineseScore) * 0.5
    }
    
    // 定義類屬性: 類屬性是和整個(gè)類相關(guān)的屬性.而且是通過(guò)類名進(jìn)行訪問(wèn)
    static var courseCount : Int = 0
    
    /*
    // 定義方法,可以返回平均成績(jī)
    func getAverageScore() -> Double {
        // 在swift開(kāi)發(fā)中,如果使用當(dāng)前對(duì)象的某一個(gè)屬性,或者調(diào)用當(dāng)前對(duì)象的某一個(gè)方法時(shí),可以直接使用,不需要加self
        return (mathScore + chineseScore) * 0.5
    }
    */
}
// 創(chuàng)建對(duì)象
let stu = Student()

// 給類屬性進(jìn)行賦值
Student.courseCount = 2

// 給對(duì)象的屬性賦值
stu.age = 10
stu.name = "yz"
stu.mathScore = 78
stu.chineseScore = 59.9

//打印age和name
print(stu.age)
// print(stu.name!) 或者下面
if let name = stu.name {
    print(name)
}

//打印 定義屬性
let averageScore = stu.averageScore
print(averageScore )

構(gòu)造函數(shù)

//OC 寫法
@interface Person : NSObject

- (instanceType)initWithName:(NSString *)name age: (int)age

@end

//swift 寫法
class Person: NSObject {
    var name : String?
    var age : Int = 0
    
    override init() {
        // 在構(gòu)造函數(shù)中,如果沒(méi)有明確super.init(),那么系統(tǒng)會(huì)幫助調(diào)用super.init()
        //init為系統(tǒng)方法,這里算重寫,需要加上,override 
        // super.init()
        
        print("------")
    }
    
    // 自定義構(gòu)造函數(shù)
    init(name : String, age : Int) {
        self.name = name
        self.age = age
    }
}
let p = Person()
//調(diào)用
let p1 = Person(name: "why", age: 18)
//打印
print(p1.age)
print(p1.name!)

監(jiān)聽(tīng)類的屬性變化

class Person: NSObject {
    // 屬性監(jiān)聽(tīng)器
    var name : String? {
        // 屬性即將改變時(shí)進(jìn)行監(jiān)聽(tīng)(不常用)
        willSet {
            print(name)
            print(newValue)
        }
        
        // 屬性已經(jīng)改變時(shí)進(jìn)行監(jiān)聽(tīng)(常用)
        didSet {
            print(name)
            print(oldValue)
        }
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末盖彭,一起剝皮案震驚了整個(gè)濱河市兰粉,隨后出現(xiàn)的幾起案子棚赔,更是在濱河造成了極大的恐慌单寂,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件笑诅,死亡現(xiàn)場(chǎng)離奇詭異焚辅,居然都是意外死亡映屋,警方通過(guò)查閱死者的電腦和手機(jī)苟鸯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門同蜻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人早处,你說(shuō)我怎么就攤上這事湾蔓。” “怎么了砌梆?”我有些...
    開(kāi)封第一講書人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵默责,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我咸包,道長(zhǎng)桃序,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任烂瘫,我火速辦了婚禮媒熊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘坟比。我一直安慰自己芦鳍,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布葛账。 她就那樣靜靜地躺著柠衅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪籍琳。 梳的紋絲不亂的頭發(fā)上菲宴,一...
    開(kāi)封第一講書人閱讀 49,071評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音趋急,去河邊找鬼喝峦。 笑死,一個(gè)胖子當(dāng)著我的面吹牛宣谈,可吹牛的內(nèi)容都是我干的愈犹。 我是一名探鬼主播,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼闻丑,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼漩怎!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起嗦嗡,我...
    開(kāi)封第一講書人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤勋锤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后侥祭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體叁执,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡茄厘,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了谈宛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片次哈。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖吆录,靈堂內(nèi)的尸體忽然破棺而出窑滞,到底是詐尸還是另有隱情,我是刑警寧澤恢筝,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布哀卫,位于F島的核電站,受9級(jí)特大地震影響撬槽,放射性物質(zhì)發(fā)生泄漏此改。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一侄柔、第九天 我趴在偏房一處隱蔽的房頂上張望共啃。 院中可真熱鬧,春花似錦勋拟、人聲如沸勋磕。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)挂滓。三九已至,卻和暖如春啸胧,著一層夾襖步出監(jiān)牢的瞬間赶站,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工纺念, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留贝椿,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓陷谱,卻偏偏與公主長(zhǎng)得像烙博,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子烟逊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容