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 日










