Swift 教學網站:https://docs.swift.org/swift-book/GuidedTour/GuidedTour.html
基本語法
宣告變數
//宣告一個變數 var myVariable=123 //宣告一個字串 let label = "This width is" let width = 94 let widthLabel = label + String(width) //將變數包在字串裡面 let apples = 3 let oranges = 5 let appleSummary = "I have \(apples) apples" //建立一個陣列 var shoppings = ["catfish", "water"] //建立一個字典 var occupations = [ "Malcolm": "Captain", "Kaylee": "Mechanic", ] //調用字典內容 occupations["Jayne"] = "Public Relations" //建立一個空陣列 let emptyArray = [String]() //建立一個空字典 let emptyDictionary = [String: Float]()
控制項
//基本IF判斷
let individualScores = [75, 43, 103, 87, 12]
var teamScore = 0
for score in individualScores {
if score > 50 {
teamScore += 3
} else {
teamScore += 1
}
}
//特殊用法
var optionalString: String? = "Hello"
print(optionalString == nil)
// Prints "false"
var optionalName: String? = "John Appleseed"
var greeting = "Hello!"
if let name = optionalName { //如果有值就成立,沒有值就離開
greeting = "Hello, \(name)"
}
//Switch Case 用法(不用寫 case )
let vegetable = "red pepper"
switch vegetable {
case "celery":
print("Add some raisins and make ants on a log.")
case "cucumber", "watercress":
print("That would make a good tea sandwich.")
case let x where x.hasSuffix("pepper"):
print("Is it a spicy \(x)?")
default:
print("Everything tastes good in soup.")
}
//foreach 用法
let interestingNumbers = [
"Prime": [2, 3, 5, 7, 11, 13],
"Fibonacci": [1, 1, 2, 3, 5, 8],
"Square": [1, 4, 9, 16, 25],
]
var largest = 0
for (kind, numbers) in interestingNumbers {
for number in numbers {
if number > largest {
largest = number
}
}
}
print(largest)
//連續索引值
var total = 0
for i in 0..<4 { //會產生 0, 1, 2, 3
total += i
}
print(total)
函數
//基本函數
func greet(person: String, day: String) -> String {
return "Hello \(person), today is \(day)."
}
greet(person: "Bob", day: "Tuesday")
//帶有回傳值的函數
func greet(_ person: String, on day: String) -> String {
return "Hello \(person), today is \(day)."
}
greet("John", on: "Wednesday")
//多個回傳值的函數
func calculateStatistics(scores: [Int]) -> (min: Int, max: Int, sum: Int) {
//傳入一個 int 型態的陣列,回傳三個 int 型態的變數 min, max, sum
var min = scores[0]
var max = scores[0]
var sum = 0
for score in scores {
if score > max {
max = score
} else if score < min {
min = score
}
sum += score
}
return (min, max, sum)
}
let statistics = calculateStatistics(scores: [5, 3, 100, 3, 9])
print(statistics.sum)
// Prints "120"
print(statistics.2)
// Prints "120"
//回傳一個函數
func makeIncrementer() -> ((Int) -> Int) {
func addOne(number: Int) -> Int {
return 1 + number
}
return addOne
}
var increment = makeIncrementer()
increment(7)
類別與物件
//基礎類別
class Shape {
var numberOfSides = 0
func simpleDescription() -> String {
return "A shape with \(numberOfSides) sides."
}
}
//實例化這個類別
var shape = Shape()
shape.numberOfSides = 7
var shapeDescription = shape.simpleDescription()
//建立帶有初始化的類別
class NamedShape {
var numberOfSides: Int = 0
var name: String
init(name: String) {
self.name = name
}
func simpleDescription() -> String {
return "A shape with \(numberOfSides) sides."
}
}
//繼承
class Square: NamedShape {
var sideLength: Double
init(sideLength: Double, name: String) {
self.sideLength = sideLength
super.init(name: name)
numberOfSides = 4
}
func area() -> Double {
return sideLength * sideLength
}
override func simpleDescription() -> String {
return "A square with sides of length \(sideLength)."
}
}
let test = Square(sideLength: 5.2, name: "my test square")
test.area()
test.simpleDescription()
//定義 getter 跟 setter(保護變數不會被亂改'變更數值)
class EquilateralTriangle: NamedShape {
var sideLength: Double = 0.0
init(sideLength: Double, name: String) {
self.sideLength = sideLength
super.init(name: name)
numberOfSides = 3
}
var perimeter: Double {
get {
return 3.0 * sideLength
}
set {
sideLength = newValue / 3.0
}
}
override func simpleDescription() -> String {
return "An equilateral triangle with sides of length \(sideLength)."
}
}
var triangle = EquilateralTriangle(sideLength: 3.1, name: "a triangle")
print(triangle.perimeter)
// Prints "9.3"
triangle.perimeter = 9.9
print(triangle.sideLength)
// Prints "3.3000000000000003"
結構與列舉
//基本的列舉,將一些常用的詞以及數字用一定的變數包裝起來,使程式碼的可讀性提高
enum Rank: Int {
case ace = 1
case two, three, four, five, six, seven, eight, nine, ten
case jack, queen, king
func simpleDescription() -> String {
switch self {
case .ace:
return "ace"
case .jack:
return "jack"
case .queen:
return "queen"
case .king:
return "king"
default:
return String(self.rawValue)
}
}
}
let ace = Rank.ace
let aceRawValue = ace.rawValue
錯誤處理
//相當於 try-catch
do {
let printerResponse = try send(job: 1040, toPrinter: "Bi Sheng")
print(printerResponse)
} catch {
print(error)
}
// Prints "Job sent"
終端機練習
開啟 Xcode,選擇 Get started with a playground
選擇 Blank 然後按 Next
放在桌面就行,按下 Create
輸入以下程式碼測試
var total = 0
for i in 0..<10 {
total += i
}
print(total)
按下最下面的播放按鍵執行程式
答案顯示45即成功.
練習
新增一個專案名稱叫 Hello Worldv2 (詳細專案設定前往:Hello World iOS App)

加入一個按鈕,將文字輸入 Hello World
同樣將版面分為兩邊
新增這個按鈕的方法,將 Connection 選為 Action,名字輸入 showMessage 後按下 Connect
在這個函數裡面輸入以下程式碼
let alertController = UIAlertController(title: "Welcome to my First App", message: "Hello World" , preferredStyle: .alert) alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: nil)) present(alertController, animated: true, completion: nil)
然後按下執行虛擬機
按下中間的 Hello World 試試看
跳出這個畫面即成功
Latest posts by SHXJ (see all)
- 受保護的內容: NAS 版 Mathbot 管理網站與 Linebot 啟動方法 - 2024 年 11 月 15 日
- Realtime 啥鬼的 - 2021 年 6 月 15 日
- nodejs 數學遊戲 - 2021 年 6 月 8 日










