当前位置: 首页> 娱乐> 影视 > 软件商店app下载官方_德州疫情最新消息今天德城区_各大网站排名_semiconductor是什么意思

软件商店app下载官方_德州疫情最新消息今天德城区_各大网站排名_semiconductor是什么意思

时间:2025/7/11 8:51:31来源:https://blog.csdn.net/2301_80437645/article/details/147164143 浏览次数:0次
软件商店app下载官方_德州疫情最新消息今天德城区_各大网站排名_semiconductor是什么意思

一个朴实无华的目录

  • 今日学习内容:
    • 1.Swift 类型转换: is 和 as 操作符实现,is 用于检测值的类型,as 用于转换类型。
      • 1.1检查类型
      • 1.2向下转型
      • 1.3Any 实例
      • 1.4AnyObject 实例
    • 2.Swift 扩展:一个扩展可以扩展一个已有类型,使其能够适配一个或多个协议
      • 2.1计算型属性
      • 2.2向类中添加新的便利构造器 init()
      • 2.3向Int类型添加一个名为 topics 的新实例方法:
      • 2.4修改该实例本身
      • 2.5添加新下标。
      • 2.6向已有的类、结构体和枚举添加新的嵌套类型:

今日学习内容:

1.Swift 类型转换: is 和 as 操作符实现,is 用于检测值的类型,as 用于转换类型。

1.1检查类型

class Subjects {var physics: Stringinit(physics: String) {self.physics = physics}
}class Chemistry: Subjects {var equations: Stringinit(physics: String, equations: String) {self.equations = equationssuper.init(physics: physics)}
}class Maths: Subjects {var formulae: Stringinit(physics: String, formulae: String) {self.formulae = formulaesuper.init(physics: physics)}
}let sa = [Chemistry(physics: "固体物理", equations: "赫兹"),Maths(physics: "流体动力学", formulae: "千兆赫"),Chemistry(physics: "热物理学", equations: "分贝"),Maths(physics: "天体物理学", formulae: "兆赫"),Maths(physics: "微分方程", formulae: "余弦级数")]let samplechem = Chemistry(physics: "固体物理", equations: "赫兹")
print("实例物理学是: \(samplechem.physics)")
print("实例方程式: \(samplechem.equations)")let samplemaths = Maths(physics: "流体动力学", formulae: "千兆赫")
print("实例物理学是: \(samplemaths.physics)")
print("实例公式是: \(samplemaths.formulae)")var chemCount = 0
var mathsCount = 0
for item in sa {// 如果是一个 Chemistry 类型的实例,返回 true,相反返回 false。if item is Chemistry {++chemCount} else if item is Maths {++mathsCount}
}print("化学科目包含 \(chemCount) 个主题,数学包含 \(mathsCount) 个主题")
以上程序执行输出结果为:实例物理学是: 固体物理
实例方程式: 赫兹
实例物理学是: 流体动力学
实例公式是: 千兆赫
化学科目包含 2 个主题,数学包含 3 个主题

1.2向下转型

let sa = [Chemistry(physics: "固体物理", equations: "赫兹"),Maths(physics: "流体动力学", formulae: "千兆赫"),Chemistry(physics: "热物理学", equations: "分贝"),Maths(physics: "天体物理学", formulae: "兆赫"),Maths(physics: "微分方程", formulae: "余弦级数")]let samplechem = Chemistry(physics: "固体物理", equations: "赫兹")
print("实例物理学是: \(samplechem.physics)")
print("实例方程式: \(samplechem.equations)")let samplemaths = Maths(physics: "流体动力学", formulae: "千兆赫")
print("实例物理学是: \(samplemaths.physics)")
print("实例公式是: \(samplemaths.formulae)")var chemCount = 0
var mathsCount = 0for item in sa {// 类型转换的条件形式if let show = item as? Chemistry {print("化学主题是: '\(show.physics)', \(show.equations)")// 强制形式} else if let example = item as? Maths {print("数学主题是: '\(example.physics)',  \(example.formulae)")}以上程序执行输出结果为:实例物理学是: 固体物理
实例方程式: 赫兹
实例物理学是: 流体动力学
实例公式是: 千兆赫
化学主题是: '固体物理', 赫兹
数学主题是: '流体动力学',  千兆赫
化学主题是: '热物理学', 分贝
数学主题是: '天体物理学',  兆赫
数学主题是: '微分方程',  余弦级数

1.3Any 实例

// 可以存储Any类型的数组 exampleany
var exampleany = [Any]()exampleany.append(12)
exampleany.append(3.14159)
exampleany.append("Any 实例")
exampleany.append(Chemistry(physics: "固体物理", equations: "兆赫"))for item2 in exampleany {switch item2 {case let someInt as Int:print("整型值为 \(someInt)")case let someDouble as Double where someDouble > 0:print("Pi 值为 \(someDouble)")case let someString as String:print("\(someString)")case let phy as Chemistry:print("主题 '\(phy.physics)', \(phy.equations)")default:print("None")}以上程序执行输出结果为:
整型值为 12
Pi 值为 3.14159
Any 实例
主题 '固体物理', 兆赫

1.4AnyObject 实例

// [AnyObject] 类型的数组
let saprint: [AnyObject] = [Chemistry(physics: "固体物理", equations: "赫兹"),Maths(physics: "流体动力学", formulae: "千兆赫"),Chemistry(physics: "热物理学", equations: "分贝"),Maths(physics: "天体物理学", formulae: "兆赫"),Maths(physics: "微分方程", formulae: "余弦级数")]let samplechem = Chemistry(physics: "固体物理", equations: "赫兹")
print("实例物理学是: \(samplechem.physics)")
print("实例方程式: \(samplechem.equations)")let samplemaths = Maths(physics: "流体动力学", formulae: "千兆赫")
print("实例物理学是: \(samplemaths.physics)")
print("实例公式是: \(samplemaths.formulae)")var chemCount = 0
var mathsCount = 0for item in saprint {// 类型转换的条件形式if let show = item as? Chemistry {print("化学主题是: '\(show.physics)', \(show.equations)")// 强制形式} else if let example = item as? Maths {print("数学主题是: '\(example.physics)',  \(example.formulae)")}
}

2.Swift 扩展:一个扩展可以扩展一个已有类型,使其能够适配一个或多个协议

2.1计算型属性

extension Int {var add: Int {return self + 100 }var sub: Int { return self - 10 }var mul: Int { return self * 10 }var div: Int { return self / 5 }
}let addition = 3.add
print("加法运算后的值:\(addition)")let subtraction = 120.sub
print("减法运算后的值:\(subtraction)")let multiplication = 39.mul
print("乘法运算后的值:\(multiplication)")let division = 55.div
print("除法运算后的值: \(division)")let mix = 30.add + 34.sub
print("混合运算结果:\(mix)")
以上程序执行输出结果为:加法运算后的值:103
减法运算后的值:110
乘法运算后的值:390
除法运算后的值: 11
混合运算结果:154

2.2向类中添加新的便利构造器 init()

struct sum {var num1 = 100, num2 = 200
}struct diff {var no1 = 200, no2 = 100
}struct mult {var a = sum()var b = diff()
}extension mult {init(x: sum, y: diff) {_ = x.num1 + x.num2_ = y.no1 + y.no2}
}let a = sum(num1: 100, num2: 200)
let b = diff(no1: 200, no2: 100)let getMult = mult(x: a, y: b)
print("getMult sum\(getMult.a.num1, getMult.a.num2)")
print("getMult diff\(getMult.b.no1, getMult.b.no2)")
以上程序执行输出结果为:getMult sum(100, 200)
getMult diff(200, 100)

2.3向Int类型添加一个名为 topics 的新实例方法:

extension Int {func topics(summation: () -> ()) {for _ in 0..<self {summation() }}
}  4.topics({print("扩展模块内")       
})    3.topics({print("内型转换模块内")       
})  
以上程序执行输出结果为:扩展模块内
扩展模块内
扩展模块内
扩展模块内
内型转换模块内
内型转换模块内
内型转换模块内

2.4修改该实例本身

extension Double {mutating func square() {let pi = 3.1415self = pi * self * self}
}var Trial1 = 3.3
Trial1.square()
print("圆的面积为: \(Trial1)")var Trial2 = 5.8
Trial2.square()
print("圆的面积为: \(Trial2)")var Trial3 = 120.3
Trial3.square()
print("圆的面积为: \(Trial3)")
以上程序执行输出结果为:圆的面积为: 34.210935
圆的面积为: 105.68006
圆的面积为: 45464.070735

2.5添加新下标。

extension Int {subscript(multtable: Int) -> Int {var powerOf10 = 1var index = multtablewhile index > 0 {powerOf10 *= 10index -= 1}return (self / powerOf10) % 10}
}print(12[0])     // 输出:2
print(7869[1])   // 输出:6
print(786543[2]) // 输出:5
以上程序执行输出结果为:2
6
5

2.6向已有的类、结构体和枚举添加新的嵌套类型:

extension Int {enum calc{case addcase subcase multcase divcase anything}var print: calc {switch self{case 0:return .addcase 1:return .subcase 2:return .multcase 3:return .divdefault:return .anything}}
}func result(numb: [Int]) {for i in numb {switch i.print {case .add:print(" 10 ")case .sub:print(" 20 ")case .mult:print(" 30 ")case .div:print(" 40 ")default:print(" 50 ")}}
}result([0, 1, 2, 3, 4, 7])
以上程序执行输出结果为:10 20 30 40 50 50 
关键字:软件商店app下载官方_德州疫情最新消息今天德城区_各大网站排名_semiconductor是什么意思

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: