swift5.x 扩展(extension)
//
// ViewController10.swift
// swiftT
//
// Created by wjwdive on 2020/5/25.
// Copyright © 2020 wjwdive. All rights reserved.
//
import UIKit
class ViewController10: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
var someInt = 3
print("Int 添加了一个 异变方法 求当前Int的平方 ",someInt.square() , someInt)
// extension 为Int 添加方法
someInt.repeatTask {
print("Jarvis ")
}
// extension 为 Double 添加计算属性
let speed: Double = 12000.0
print("extension 为 Double 添加计算属性(doubel 转为km)",speed.km)
}
}
// Swift 扩展 extension
// 1、添加计算实例属性和计算类型方法
// 2、定义实例方法和类型方法
// 3、提供新初始化器
// 4、定义下标
// 5、定义和使用新内嵌类型
// 6、使现有的类型遵循某协议
// 7、扩展可以向一个类型添加新的反法,但是不能重写已有的方法 //和OC的不同之处,OC是可以重写已有的方法的
// 不能添加存储属性
// 2、 扩展可以向已有的类型添加新的初始化器。这允许你扩展其他类型以使初始化器接收你的自定义类型作为形式参数,或提供该类型的原始实现中未包含的额外初始化选项
// 3、扩展能为添加新的便捷初始化器,但是不能为类添加指定初始化器或反初始化器。指定初始化器和反初始化器必须由原来的实现提供
// 扩展的实例方法仍可修改(或异变)实例本身。结构体和枚举类型方法在修改self或本身的属性时必须标记实例方法为mutating,和原本实现的异变方法一样
extension Int{
mutating func square() {
self = self * self
}
}
// 扩展为已有的类型添加新的下标 例如: 通过给整数添加下标,返回整数下标对应的数字
extension Int {
subscript(digitIndex: Int) -> Int {
get{
var decimalBase = 1
for _ in 0..<digitIndex {
decimalBase *= 10
}
return (self / decimalBase) % 10
}
}
}
// 扩展为已有的类、结构体、枚举 添加新的【内嵌类型】 为Int 添加内嵌类型
extension Int {
enum Kind {
case negative, zero, positive
}
var kind: Kind {
switch self {
case 0:
return .zero
case let x where x > 0:
return .positive
default:
return .negative
}
}
}
// extension 为Doubel添加计算属性
extension Double {
var km: Double {
return self / 1000.0
}
}
// extension 为Int添加方法
extension Int {
func repeatTask(_ task: () -> ()) {
for _ in 0..<self {
task()
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
2016-05-25 ionic 写一个五星评价(非指令)