4-类和结构体和可选类型

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; 这种?的引用方式就是可选链 是一种温柔的访问方式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值