的注意點
/*a.有限考慮建立協議,而不是父類(基類)。
b.優先考慮值型別(struct、enum),而不是引用型別。
c.巧用協議的拓展功能。
d.不要為了面向協議而使用協議。
*///6.利用協議實現字首效果
//字首型別
struct mj
}//利用協議拓展字首屬性
protocol mjcompatibble {}
extension mjcompatibble //為了mutating語法能通過
get
}var mj: mj
get }}
//給字串拓展功能
//讓string擁有mj字首屬性
extension string: mjcompatibble {}
extension nsstring: mjcompatibble {}
//給string.mj、string().mj字首拓展功能
extension mj where base: expressiblebystringliteral
return count
}mutating func run() {}
static func test() {}
}var str1 = "123123"
var str2: nsstring = "123123"
var str3: nsmutablestring = "123123"
str1.mj.run() //"123123"mj.run() 報錯
print(str1.mj.numbercount)
print(str2.mj.numbercount)
print(str3.mj.numbercount)
//7.利用協議實現型別判斷
func isarray(_ value: any) -> bool
print(isarray([1, 2])) //true
print(isarray(["1", 2])) //true
print(isarray(nsarray())) //true
print(isarray(nsmutablearray())) //true
print(isarray("123123")) //false
protocol arraytype {}
extension array: arraytype {}
extension nsarray: arraytype {}
func isarraytype(_ type: any) -> bool
print(isarraytype([int].self)) //true
print(isarraytype([double].self))//true
print(isarraytype([any].self))//true
print(isarraytype(nsarray.self))//true
print(isarraytype(nsmutablearray.self))//true
print(isarraytype(string.self))//false
物件導向 多型 二十三
一.多型的概述及其 體現 a 多型 polymorphic 概述 事物存在的多種形態 b 多型前提 a 要有繼承關係。b 要有方法重寫。c 要有父類引用指向子類物件。class demo1 polymorphic class animal class cat extends animal 二.多型中...
十三 物件導向程式設計
1 物件導向基本概念 物件導向的意義在於 類和物件是物件導向中的兩個基本概念 乙個類可以有很多物件,而乙個物件必然屬於某個類 類之間的基本關係 組合 繼承是單向的,子類繼承父類所有的屬性和行為 include struct biology struct animal biology struct p...
shell程式設計題(二十三)
題目 設計乙個shell程式,在每月第一天備份並壓縮 etc目錄的所有內容,存放在當前目錄下 root bak root目錄需要存在 目錄裡,且檔名,為如下形式yymmdd etc,yy為年,mm為月,dd為日。shell程式fileback存放在 usr bin目錄下。答案 bin bash di...