#5 function & 類別的練習
這次有三個練習的主題:1. 用 function 定義 聽一秒落淚的情歌歌詞,2. 定義兩個類別,使用繼承,產生物件存取屬性,呼叫方法,3. 用 function 定義公式,呼叫function 作計算。
- 用 function 定義 聽一秒落淚的歌詞
聽一秒落淚的情歌歌詞,蛤! 想不出來,一時真難找,去問神,給了一堆,選一個難易度適中的,那就是 → 呂方 唱的 老情歌。
程式如下:
//定義function,印出讓自己一秒落淚的情歌歌詞
import UIKit
func 我只想唱這ㄧ首老情歌 (text:String)->() {
print(“\(text)”)
}
func end (text:String)->() {
print(“\(text)”)
}
let section1:String = “ 我只想唱這一首老情歌\n 讓往事再湧滿心頭\n 當時光已逝 已不知秋冬\n 這是我唯一的線索\n 人說情歌總是老的好\n 走遍天涯海角忘不了\n 我說情人卻是老的好\n 曾經滄海桑田分不了\n”
let section2:String = “ 我只想唱這一首老情歌\n 願歌聲飛到你左右\n 雖然你不能和我常相守\n 但求你永遠在心中\n “
let section3:String = “ 人說情歌總是老的好\n 走遍天涯海角忘不了\n 我說情人卻是老的好\n 曾經滄海桑田分不了\n “
let section4:String = “ 我只想唱這一首老情歌\n 願歌聲飛到你左右\n “
let end:String = “ 雖然你不能和我常相守\n 但求你永遠在心中\n 雖然你不能和我常相守\n 但求你永遠在心中\n “
我只想唱這ㄧ首老情歌(text:section1)
我只想唱這ㄧ首老情歌(text:section2)
我只想唱這ㄧ首老情歌(text:section1)
我只想唱這ㄧ首老情歌(text:section3)
我只想唱這ㄧ首老情歌(text:section4)
end(text: end)
程式執行結果如下:
我只想唱這一首老情歌
讓往事再湧滿心頭
當時光已逝 已不知秋冬
這是我唯一的線索
人說情歌總是老的好
走遍天涯海角忘不了
我說情人卻是老的好
曾經滄海桑田分不了
我只想唱這一首老情歌
願歌聲飛到你左右
雖然你不能和我常相守
但求你永遠在心中
我只想唱這一首老情歌
讓往事再湧滿心頭
當時光已逝 已不知秋冬
這是我唯一的線索
人說情歌總是老的好
走遍天涯海角忘不了
我說情人卻是老的好
曾經滄海桑田分不了
人說情歌總是老的好
走遍天涯海角忘不了
我說情人卻是老的好
曾經滄海桑田分不了
我只想唱這一首老情歌
願歌聲飛到你左右
雖然你不能和我常相守
但求你永遠在心中
雖然你不能和我常相守
但求你永遠在心中
定義兩個function,將歌詞分4段和ending,歌詞用字串參數傳入,function 內只有一行 print text ,去 YOUTUBE 聽看看,你想起了誰?打電話給他(她),電話號碼沒有改?!
2. 定義兩個類別,使用繼承,產生物件存取屬性,呼叫方法
定義鴨子類別(父類別),在分別定義兩個子類別繼承父類別;父類別的屬性有鴨子的顏色,類別的方法是鴨子的叫聲和鴨子的行爲,生成兩個鴨子物件,綠色的紅頭鴨會呱呱叫不會飛會游泳,黃色的模型鴨不會叫不會飛不會游泳。
程式如下:
/*
定義兩個類別,用到繼承,類別裡包含屬性和方法,在方法裡有使用到
屬性,然後用類別生出物件存取物件和呼叫物件的方法
*/
class Duck {
var color:String
init() {
color = “Green”
}
func quack() -> () {
print(“QUACK”)
}
func behavior()->(){
print(“FLY”)
}
}
class RedheadDuck : Duck {
override func behavior() {
print(“I can’t Fly,I am SWIMMing”)
}
}
class ModelDuck : Duck {
override func quack() {
print(“I am ModelDuck,Silence.”)
}
override func behavior() {
print(“I can’t Fly,I can’t SWIMMing”)
}
}
let newReheadDuck = RedheadDuck()
print(“I am \(newReheadDuck.color) ReheadDuck”)
newReheadDuck.quack()
newReheadDuck.behavior()
let newModelDuck = ModelDuck()
newModelDuck.color = “YELLOW”
print(“I am \(newModelDuck.color) ModelDuck “)
newModelDuck.quack()
newModelDuck.behavior()
執行結果如下
I am Green ReheadDuck
QUACK
I can’t Fly,I am SWIMMing
I am YELLOW ModelDuck
I am ModelDuck,Silence.
I can’t Fly,I can’t SWIMMing
3. 用 function 定義公式,呼叫function 作計算
定義梯形面積公式function,呼叫function 計算梯形面積
程式如下:
//公式計算,寫梯形面積的function
func trapezoidArea(height:Float,width:Float )->Float {
return ((height*width)/2)
}
let trapezoideWidth:Float = 10.5
let trapezoideHeigth:Float = 20.5
print(“梯形高是\(trapezoideHeigth),梯形底是\(trapezoideWidth),面積是\(trapezoidArea(height: trapezoideHeigth, width: trapezoideWidth))”)
程式執行結果如下:
梯形高是20.5,梯形底是10.5,面積是107.625
以上的程式執行環境是playground,這些主題練習是基本功。