swift 范型之类型擦除

在 Swift 中,泛型协议不能直接用于变量。如果你想存储 不同泛型类型,可以使用 类型擦除模式(Type Erasure)。

protocol Shape {func area() -> Double
}// 泛型包装类,隐藏泛型类型,让 shapes 数组可以存储不同的 Shape 类型。
class AnyShape<T: Shape>: Shape {private let _area: () -> Doubleinit<U: Shape>(_ shape: U) where U == T {_area = shape.area}func area() -> Double {return _area()}
}struct Circle: Shape {var radius: Doublefunc area() -> Double { return .pi * radius * radius }
}struct Square: Shape {var side: Doublefunc area() -> Double { return side * side }
}// ✅ 允许存储不同 Shape 类型
let shapes: [AnyShape<Shape>] = [AnyShape(Circle(radius: 5)), AnyShape(Square(side: 4))]for shape in shapes {print(shape.area())
}

  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/879029.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DeepSeep本地部署

1、浏览器搜索引擎更改 2、搜索:Ollama操作下载: 也可直接进入下载路径:https://ollama.com/download/windows ollama run deepseek-r1 本文来自博客园,作者:他还在坚持嘛,转载请注明原文链接:他还在坚持嘛 https://www.cnblogs.com/brf-test/p/18699050

Linux下使用df与du命令查看磁盘空间

1、df磁盘空间查看df可以查看一级文件夹大小、使用比例、档案系统及其挂入点。[root@oms ~]# df -Th Filesystem Type Size Used Avail Use% Mounted on /dev/vda1 ext4 40G 35G 3.1G 92% / devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev tmp…

JOKER智能可视化平台 20250204版本更新说明

本次 JOKER 低代码平台更新涵盖了代码生成、环境变量、可视化开发工具等多个关键领域的优化与新增功能,致力于为开发者提供更高效、更安全、更便捷的开发体验。同时,服务端功能的正式发布以及核心升级,进一步增强了平台的整体性能和竞争力。 一、功能更新与优化 (一)代码生…

城市智慧升级:超算与智算的协同效应

随着数字化转型的不断深入,城市高质量发展越来越依赖于强大的算力支持。结合超级计算(超算)和智能计算(智算)的“超算+智算”模式,正在成为推动城市创新和智能化发展的重要力量。超算与智算的结合超级计算通常指的是使用最先进的计算机硬件和软件进行大规模科学计算的技术…

linux安装适用glibc2.17的nodejs高版本

从nodejs18开始需要的glibc版本要>2.28,这对有些系统是不支持的,除了官方的下载地址外,还有个地址可以下载适用2.17的nodejs高版本。 https://unofficial-builds.nodejs.org/download/release/ 对于linux平台直接下载解压使用即可。本帖子也是纯手工制作,转载请标明出处…

安卓苹果手机通用的便签备忘录APP哪个好用?

每次换手机最头疼的不是适应新系统,而是发现旧手机里800条备忘和灵感,全都困在品牌的生态孤岛里! 无论是小米换iPhone还是华为跳三星,系统自带的备忘录就像「前任的日记本」,永远无法在新欢身上打开。 这时候你就需要一款真正打破系统壁垒的「跨平台同步便签/备忘录APP」!…

市域治理“一网统管”:构建现代化城市治理新体系

随着信息技术的快速发展,城市治理面临着新的机遇与挑战。市域治理“一网统管”作为推动城市治理现代化的重要举措,正逐渐成为提升城市管理效率和服务质量的关键。本文将探讨市域治理“一网统管”的建设内容,旨在为构建更加智能、高效的城市治理体系提供参考。一网统管的内涵…

红米Note12TPro-小米14Ultra-Root记录

原文链接:https://tingxuanr.github.io/note/红米note12tpro-小米14ultra-root记录/#more 摘要:记录一下给红米note12t、红米note11t、小米14ultra的root过程。联发科芯片和骁龙芯片及不同安卓版本的root过程有差异。推荐用狐狸面具,隐藏root能过电信app和银行app的检测。红…

非物质文化遗产服务系统

在数字化时代,非物质文化遗产(以下简称“非遗”)的保护与传承面临着新的机遇与挑战。非遗不仅是一个国家和民族历史文化成就的重要标志,更是全人类的共同文化财富。随着现代化进程的加速,许多非遗技艺面临失传的危险,因此开发一套系统对其进行保护和传承显得尤为迫切。非…

城市扩张模拟与评价系统

随着全球城市化的加速推进,城市扩张已成为不可避免的趋势。然而,无序的城市扩张往往伴随着资源浪费、环境污染、交通拥堵等一系列问题。因此,建立一个科学、高效的城市扩张模拟与评价系统显得尤为重要。 一、系统建设的必要性城市扩张模拟与评价系统旨在通过模拟技术预测城市…

2025年热门项目管理软件大PK:5款最火工具,哪一款是你的首选?

在当今竞争激烈的商业环境中,高效的项目管理是企业成功的关键。随着数字化技术的飞速发展,项目管理软件如雨后春笋般涌现,为项目管理者提供了强大的支持。今天,我们将为大家揭秘 2025 年最热门的 10 款项目管理软件,它们各具特色,功能强大,究竟哪一款能成为你项目管理的…

springboot~http请求和响应的字段格式化

我们以日期类型为例,把它作为请求参数和响应字段进行说明,默认的日期字段格式为ISO 8601标准,DateTimeFormat.ISO.DATE_TIME,格式为yyyy-MM-ddTHH:mm:ss,与咱们常用的日期时间有所不同,所以咱们需要重新定义一下。 本文功能统一了日期参数,由传入的字符串传为java对象 统…