Swift5.0详解(基础篇二)
2019-07-15 本文已影响7人
浅宇落
可选类型(Optionals)
var optiontion: String? = "可选类型 Swift" // 创建可选类型
print(optiontion) // 结果: Optional("可选类型 Swift")
let optiontionStr = optiontion! // 强制解包(如果optiontion为 nil, 会导致崩溃) 结果: 可选类型 Swift
// 可选绑定(if let)
if let optiontionStr = optiontion {
print(optiontionStr)
}else {
print("optiontion为 nil")
} // 结果: 可选类型 Swift
let optiontionStr = optiontion ?? "值" // 如果optiontion为 nil 则会取用 ?? 后面的值 结果: 可选类型 Swift
函数(Function)
// 无参数, 无返回值
func sayHi() {
print("你好, sayHi")
}
sayHi() // 结果: 你好, sayHi
// 无参数, 有返回值
func sayHi() -> String {
return "你好, Swift"
}
let str = sayHi()
print(str) // 结果: 你好, Swift
// 有参数, 无返回值
func sayHi(number: String) {
print("你好, sayHi\(number)")
}
sayHi(number: "**15") // 结果: 你好, sayHi**15
// 有参数, 有返回值
func sayHi(number: String) -> String {
return number
}
let str = sayHi(number: "有参数, 有返回值")
print(str) // 结果: 有参数, 有返回值
// 参数默认值
func sayHi(number: String = "你好, LZY") {
print(number)
}
sayHi(number: "LZY") // 结果: LZY
sayHi() // 结果: 你好, LZY
类(Class)

// 创建Person类
class Person {
var sex: Int
var crad: String
init() {
self.sex = 1
self.crad = "身份证号"
}
convenience init(sex: Int, crad: String) {
self.init()
self.sex = sex
self.crad = crad
}
func sayHi() {
print("性别 : \(sex), 身份证: \(crad)")
}
// 实例化对象 p1
let p1 = Person()
p1.sex = 2 // 为sex赋值
p1.crad = "783131" // 为crad赋值
p1.sayHi() // 结果: 性别 : 2, 身份证: 783131
print(p1.sex, p1.crad) // 结果: 2 783131
// 实例化对象 p
let p = Person(sex: 12, crad: "56563232323")
p.sayHi() // 结果: 性别 : 12, 身份证: 123456
print(p.sex, p.crad) // 结果: 12 56563232323
// 继承
class PersonSub: Person {
var height: Float = 180.0
// 重写 sayHi 方法
override func sayHi() {
print("性别 : \(sex), 身份证: \(crad), 身高: \(height)")
}
personSub.sayHi() // 结果: 性别 : 1, 身份证: 身份证号, 身高: 180.0
print(personSub.sex, personSub.crad, personSub.height) // 结果: 1 身份证号 180.0
}
结构体(Struct)
struct StudentMarks {
var mark1 = 100
var mark2 = 78
var mark3 = 98
}
// 创建方式1
let marks = StudentMarks()
print("Mark1 是 \(marks.mark1)") // 结果: Mark1 是 100
print("Mark2 是 \(marks.mark2)") // 结果: Mark2 是 78
print("Mark3 是 \(marks.mark3)") // 结果: Mark3 是 98
// 创建方式2
let mark = StudentMarks(mark1: 100, mark2: 78, mark3: 98)
print("Mark1 是 \(marks.mark1)") // 结果: mark 是 100
print("Mark2 是 \(marks.mark2)") // 结果: mark 是 78
print("Mark3 是 \(marks.mark3)") // 结果: mark 是 98
// 结构体克隆
struct MarksStruct {
var mark: Int
}
var aStruct = MarksStruct(mark: 98)
var bStruct = aStruct // aStruct 和 bStruct 是使用相同值的结构体!
bStruct.mark = 97
print(aStruct.mark) // 结果: 98
print(bStruct.mark) // 结果: 97