import UIKit
var str = “Hello, playground”
// 1 枚举语法
// 与 C 和 Objective-C 不同,Swift 的枚举成员在被创建时不会被赋予一个默认的整型值
// 书写方式一
enum sizeType{
case small
case middle
case large
}
// 书写方式二
enum sizeNumber
{
case x, xl ,xxl
}
// 直接进行调用
sizeNumber.x
// 2 类和结构体
// 通过关键字class和struct来分别表示类和结构体,并在一对大括号中定义它们的具体内容
class Stuff
{
var name:String = “”;// 姓名
var age:UInt = 0;// 年龄
var department:Department? // 所在部门
// 在这里定义
}
struct Department
{
// 在这里定义结构体
var name:String = “”;// 部门名称
var no:String = “”;// 部门的编号
}
// 结构体和类在构造过程中会调用一个构造器
// 3 引用类型的比较
var s_a = Stuff();
s_a.name = “alex”;
var s_b = Stuff();
s_b.name = “tom”;
var s_c:Stuff = s_a;
// === 用于比较两个引用是否为一个示例
if s_a === s_b {
print(“stuff a===b”);
}else{
print(“not equal”);
}
// 如果是引用同一个示例 就会报相等
if s_a === s_c {
print(“stuff a===c”);
}
// 结构体是属于值类型的 不能用于=== 进行比较
// 4 类型嵌套
// 比如说在类中嵌套结构体 枚举类型
class Closes {
var color:String = “”;// 默认
var price:Double = 0;// 默认
var size:sizeType = .small; // 默认
// 嵌套枚举类型
enum sizeType {
case small,middl,large
}
//
}
var c = Closes();
c.price = 20.0;
c.size = .middl;
print(c.size);
// 5 可选类型
// 使用一个变量的时候,这个变量可能有值也可能没有值,在此类型后面加上?表示可选类型
// 下面函数的返回结果就是可选类型 如果B为0 则不能被除
func devide (a:Int,b:Int)->Double?{
if b==0 {
return nil;
}
return Double(a)/Double(b);
}
// 可选绑定
// 可选类型可以用于判断是否有值进行绑定
if let res: Double? = devide(a: 5, b: 5){
//
print(“赋值成功”)
}else{
print(“赋值失败”)
}
// 强制拆封 确定可选类型有值的话 在读取的时候 使用!取值 就是强制拆封
let res2:Double? = devide(a: 5, b: 2);
print(res2!);
// 隐式拆封
// 为了方便的访问可选类型 直接将可选类型后面添加!称之为隐式拆封
let res3:Double! = devide(a: 50, b: 10);
print(res3);
// 可选链
class Employee{
var name:String = “Tom”;
var depart:Depart?;
}
class Depart{
var name:String = “IT”;
var company:Company?;
}
class Company{
var name:String = “trade”;
}
var e = Employee();
// ? 表示引用的时候 某一个环节只要出现一个nil 则把nil 返回给引用者
// e.depart?.company?.name; 这种?的引用方式就是可选链 是一种温柔的访问方式