编辑代码

// // 常量的定义
// let lengthOfTelephoneNumber = 8
// let lengthOfIdentityCardNumber = 18
// let lengthOfZipNumber = 6
// //变量的定义
// var totalVisits = 2000000
// var numberOfMembers = 10000
// var currentSpeed = 120
// //常量,变量命名
// var a_b = "a and b"
// var aPerson = "one person"
// let hello = "say hello"
// let mul = "multiply operator"
// var numOfApple = 88
// //可读性强的命名
// var numberOfStudents = 68
// var idCardNumber = "320602201612120652"
// let pi = 3.141516
// //可读性弱的命名
// var a = 68
// var b = "320602201612120652"
// let c = 3.141516
// //类型声明
// let name : String = ""
// var age : Int = 0
// //定义变量
// var a_b = "a and b"
// var aPerson = "one person"
// var hello = "say hello"

// //分配变量值
// hello = "say hi"
// a_b = "c and d"

// //输出
// print(a_b)
// print(hello)
// print("The value of variable a_b is \(a_b)")
// print(aPerson)
// //分隔符
// var a_b = "a and b", aPerson = "one person", hello = "say hello"

// let thisYear = "2022"
// let myOrganisation = "QingChuan"
// let myhobby = "Reading"
//definition part
// var radius:Double = 3.0
// let pi:Double = 3.1415
// var areaOfCircle:Double = pi * radius * radius

// //output part
// print("radius = \(radius), pi = \(pi), so the area of circle is : \(areaOfCircle)")
// var daylight : Bool = true

// var lightSwitch = false

// if daylight {
//     lightSwitch = false
//     print("It is daytime, so turn  light switch off!")
// } else {
//     lightSwitch = true
//     print("It is night, please turn light switch on!")
// }
// var isWeekend :Bool = false

// if isWeekend {
//     print("Today may be Saturday or Sunday.")
// } else {
//     print("Today is not Saturday or Sunday.")
// }

// var sunnyDay = true

// if sunnyDay {
//     print("It's sunny.")
// } else {
//     print("It's rainy or cloudy.")
// }
//定义元组
// let http404Error = (404, "Not Found")
// //元组赋值
// let (Code,Description) = http404Error
// print(Code)
// print(Description)
// //访问元组
// print(http404Error.0)
// print(http404Error.1)

// let http406Error = (Code: 406, Description: "Not Acceptable")
// print(http406Error.Code)
// print(http406Error.Description)

// let rectangle = (len:10 , width:5)
// print(rectangle.0)
// print(rectangle.width)
// print(rectangle)
//定义元组
// let studentInfo = (60115, "Liang Zhang", true)

// //访问元组方法1
// let (idNum, name, mCCP) = studentInfo
// print("Student \(name)'s identification number is \(idNum)")
// if mCCP {
//     print("\(name) is a member of Chinese Communist Party")
// } else {
//     print("\(name) isn't a member of Chinese Communist Party")
// }
// //访问元组方法2
// print(“Student \(studentInfo.1)'s identification number is \(studentInfo.0)”)
// if studentInfo.2 {
//     print(“\(studentInfo.1) is a member of Chinese Communist Party”)
// } else {
//     print(“\(studentInfo.1) isn't a member of Chinese Communist Party”)
// }

// //访问元组方法3
// let anotherStudentInfo = (idNum: 60115, name: “Liang Zhang”, mCCP: true)
// print(“Student \(anotherStudentInfo.name)'s identification number is \(anotherStudentInfo.idNum)”)
// if anotherStudentInfo.mCCP {
//     print(“\(anotherStudentInfo.name) is a member of Chinese Communist Party”)
// } else {
//     print(“\(anotherStudentInfo.name) isn't a member of Chinese Communist Party”)
// }
// //定义元组
// let studentInfo = (60115, “Liang Zhang”, true)

// //访问元组方法1
// let (idNum, name, mCCP) = studentInfo
// print(“Student \(name)'s identification number is \(idNum)”)
// if mCCP {
//     print(“\(name) is a member of Chinese Communist Party”)
// } else {
//     print(“\(name) isn't a member of Chinese Communist Party”)
// }

// //访问元组方法2
// print(“Student \(studentInfo.1)'s identification number is \(studentInfo.0)”)
// if studentInfo.2 {
//     print(“\(studentInfo.1) is a member of Chinese Communist Party”)
// } else {
//     print(“\(studentInfo.1) isn't a member of Chinese Communist Party”)
// }

// //访问元组方法3
// let anotherStudentInfo = (idNum: 60115, name: “Liang Zhang”, mCCP: true)
// print(“Student \(anotherStudentInfo.name)'s identification number is \(anotherStudentInfo.idNum)”)
// if anotherStudentInfo.mCCP {
//     print(“\(anotherStudentInfo.name) is a member of Chinese Communist Party”)
// } else {
//     print(“\(anotherStudentInfo.name) isn't a member of Chinese Communist Party”)
// }
// //Swift的空值
// var studentInSwift: (name: String, idNumber: String, age: Int, reward: String?) = (“Jim”, “37060116”, 19, “Best Student”)
// //case 2nd: Tom has no reward
// studentInSwift = (“Tom”, “37060115”, 20, nil)

// //定义可选类型
// var reward: String?
// reward = “Best Student”

// var bonus: String = “default value”
// //字符串拆包
// bonus = reward!
// //print(“\(bonus)”)
// if reward != nil {
//     bonus = reward!
//     print(“\(bonus)”)
// } else {
//     print(“reward is nil”)
// }
// var reward: String?

// //可选型绑定
// if let reward = reward {
//     print(“The optional's value is \(reward)”)
// } else {
//     print(“The optional is nil”)
// }

// var countsOfReward: Int?

// countsOfReward = 9

// //可选型绑定
// if let countsOfReward = countsOfReward {
//     print(“Counts of reward is \(countsOfReward)”)
// } else {
//     print(“There is no reward record”)
// }
// var reward: String?
// var countsOfReward: Int?

// reward = “Best Student”
// countsOfReward = 9

// //多个可选型绑定
// if let reward = reward, let countsOfReward = countsOfReward, countsOfReward > 3 {
//     print(“reward is \(reward), counts are \(countsOfReward)”)
// } else {
//     print(“no reward or no counts or counts<=3”)
// }
// // nil聚合运算
// var reward: String?
// var countsOfReward: Int?

// reward = “Best Student”
// countsOfReward = nil

// var valueOfReward = reward ?? “No Reward”
// var valueOfCounts = countsOfReward ?? 0

// print(valueOfReward)
// print(valueOfCounts)
//练习1
// var myHobby: String?

// //I like playing soccer
// myHobby = "playing soccer"
// // 
// //I haven't any hobby
// myHobby = nil

// let parsedInt = Int("10")

// //parse a string into a int
// var parseStringToInt = Int("10")

// parseStringToInt = Int("Picasso")
//练习2
//student's information
var name: String = "Tommy"
var hobby: String?

//force unwrapping
if hobby != nil {
    print("\(name)'s hobby is \(hobby!)")
} else {
    print("\(name) has no hobby")
}

var membership: String?
membership = "IEEE senior member"
//optional binding
if let membership = membership {
    print("\(name) is \(membership)")
} else {
    print("\(name) doesn't join any orgnization!")
}

hobby = "soccer"
//multiple optional binding
if let hobby = hobby, let membership = membership {
    print("\(name)'s hobby is \(hobby) and is also \(membership)")
} else {
    print("\(name) has no hobby or doesn't join any orgnization!")
}

//nil coalescing
var getHobby = hobby ?? "No hobby"
var getMembership = membership ?? "No membership"

hobby = nil
membership = nil

getHobby = hobby ?? "No hobby"
getMembership = membership ?? "No membership"