Swift class / 6. 建立func與class
這兩週反覆練習這兩項,就一次寫完吧!
建立function的用意在於快速帶入功能,性質跟var較像。而class(物件)則是對於不同條件下呼叫不同內容,執行相同功能,所以class裡面是可以包含func的。先來個兩者初次見面的簡易案例。
class Baby {func eatFood(name:String, price:Int) {var message = “花了\(price)吃\(name)” }}var cuteBaby = Baby()cuteBaby.eatFood(name: “milk”, price: 700)
1. 靈活運用的工具包func
func有型別,func內的參數也可以是func,主要的寫法如下:
func 名稱(參數:參數型別) -> 回傳型別 {return 回傳內容}
//要記得寫return才會回傳結果
案例1. func calculate: 計算1~12區間內,5的倍數的總和
案例2. eatAndExercise: 將不同func分別帶入sport參數,會回傳不同結果
案例3. buyBook: 根據不同書名和價錢,回傳”花了多少錢買書”的字串
案例4. createMovieMessage: 針對不同年紀和電影,有不同的訊息
2. 一定要有初始值的Class
Class主要的寫法如下,名稱通常大寫,init代表初始值,初始值下方的變數僅發生在此項目中。
class 物件名稱 {
var 屬性名稱 =
func 功能名稱(){
}
}
var 變數名稱 = 物件名稱()
呼叫方式則是用點
變數名稱.屬性名稱
//如果要更改屬性就在後方直接=新值
案例1. cuteBaby: 當只知道小孩名or年紀時,可以講的話
案例2. Food: 檢查有無兩小時就喝一次牛奶,這案例主要是設定物件Food(用來回傳牛奶)、Baby(檢查喝牛奶時間),用cutebaby3/4來帶出結果。
3. 大量資料用Array
Array從零開始算,在var names =等號後加括號[]表示。
案例一:找出最高分數 這個案例結合了for…in…與Array,設置條件逐一對比,可找出五位學生中分數最高的那位。
案例二:比較班上分數 先設定物件Student及其初始值,後續設立多個變數+變數初始值,沒有設定的就照初始值(Ex: var student1)。設陣列students包涵這些學生,並算出成績最好的人,與平均成績。
Array的其他用法:
var names = [String]() //成員都是字串var names = ["A","B","C"]
names.append("D") //陣列加入字串D
names = names + ["D"] //陣列加入字串D
這堂課的感想:命名很重要。
到最後一個案例可以看到有點亂了,就跟編檔名一樣,練習時一直用baby導致有baby1/2/3/4/到最後就跟數字混淆了,需要更高級的命名方式啊!
其他還有教到array(用於比較/抽取大量樣本)於8/31補充完畢,這堂課就記錄到這邊:)