associatedtype关联类型

associatedtype关联类型

定义一个协议时,有的时候声明一个或多个关联类型作为协议定义的一部分将会非常有用。关联类型为协议中的某个类型提供了一个占位名(或者说别名),其代表的实际类型在协议被采纳时才会被指定。你可以通过 associatedtype 关键字来指定关联类型。比如使用协议声明更新cell的方法:

[objc] view plain copy

  1. //模型
  2. struct Model {
  3. let age: Int
  4. }
  5. //协议,使用关联类型
  6. protocol TableViewCell {
  7. associatedtype T
  8. func updateCell(_ data: T)
  9. }
  10. //遵守TableViewCell
  11. class MyTableViewCell: UITableViewCell, TableViewCell {
  12. typealias T = Model
  13. func updateCell(_ data: Model) {
  14. // do something ...
  15. }
  16. }

原文地址:https://www.cnblogs.com/feng9exe/p/9102738.html

时间: 2024-08-03 09:13:11

associatedtype关联类型的相关文章

swift protocol(协议) associatedtype关联类型

定义一个协议时,有的时候声明一个或多个关联类型作为协议定义的一部分将会非常有用.关联类型为协议中的某个类型提供了一个占位名(或者说别名),其代表的实际类型在协议被采纳时才会被指定.你可以通过 associatedtype 关键字来指定关联类型.比如使用协议声明更新cell的方法: //模型 struct Model { let age: Int } //协议,使用关联类型 protocol TableViewCell { associatedtype T func updateCell(_ da

iOS-Swift协议中关联类型的使用

Associated Type :关联类型 有时候会遇到这样的需求,继承自某一协议的类中需要保证代理方法处理的参数类型保持一致,这就需要使用关联类型来做到这一点 协议声明: protocol ATypeDelegate { associatedtype T func printContent( ct : T) func colum( ct : T) } 协议使用: class ATypeClass: ATypeDelegate { typealias T = Int func printCont

iOS学习之Swift 关联类型

有时候我认为类型理论是故意弄的很复杂,以及所有的那些函数式编程追随者都只是胡说八道,仿佛他们理解了其中的含义.真的吗?你有一篇5000 字的博客是写关于插入随机类型理论概念的吗?毫无疑问的没有.a)为什么有人会关心这些以及b)通过这个高大上的概念能帮我们解决什么问题?我想把你装进麻布袋里,扔进河里,并且砸进一个坑 里. 我们在讨论什么?当然,关联类型. 当我第一次看到 Swift 范型的实现时, 关联类型的用法的出现,让我感到很奇怪. 在这篇文章,我将通过类型概念和一些实践经验,这几乎都是我用自

JSON解析关联类型发生死循环 There is a cycle in the hierarchy!

解决办法是忽略掉关联类型的数据,使用jsonConfig进行配置,代码如下: JsonConfig jsonConfig = new JsonConfig();  //建立配置文件 jsonConfig.setIgnoreDefaultExcludes(false);  //设置默认忽略 jsonConfig.setExcludes(new String[]{"glLocation"}); JSONArray jsonArray = JSONArray.fromObject(list,

Swift - 关键字(typealias、associatedtype)

Typealias typealias 是用来为已经存在的类型重新定义名字的,通过命名,可以使代码变得更加清晰.使用的语法也很简单,使用typealias 关键字像使用普通的赋值语句一样,可以将某个已经存在的类型赋值为新的名字.比如在计算二维平面上的距离和位置的时候,我们一般使用Double来表示距离,用CGPoint来表示位置: [javascript] view plain copy func distance(_ point: CGPoint, _ anotherPoint: CGPoin

Autofac全面解析系列(版本:3.5) – [使用篇(推荐篇):4.类型关联(服务暴露)]

前言 autofac Autofac是一套高效的依赖注入框架. Autofac官方网站:http://autofac.org/ Autofac在Github上的开源项目:https://github.com/autofac/Autofac Autofac安装:通过VS的Nuget可以很方便的获取. 类型关联(服务暴露) 关于“类型关联(服务暴露)”这个名字,是源于官网上的exposes一词,有点词穷,希望大家在看完博客后能够提供更加贴切的描述名称. 前面的autofac系列文章一直有提到直接注册

Swift 里集合类型协议的关系

? ? Sequence A type that provides sequential, iterated access to its elements. 是最基础的协议,可以通过迭代来获取它的元素. 有两个关联类型: /// A type representing the sequence's elements. associatedtype Element /// A type that provides the sequence's iteration interface and ///

thinkphp关联模型的用法

HAS_ONE(值得注意的是,这是主动关联,外键必须是被关联的表): 1 <?php 2 namespace Home\Model; 3 use Think\Model\RelationModel; 4 class TagModel extends RelationModel{ 5 protected $_link =array( 6 'artag'=>array(//关联的数据表 7 'mapping_type'=>self::HAS_ONE,//一对一 8 'class_name'

ThinkPHP - 关联模型

使用之前,先引入文件夹,否则相应的功能不能实现. 如果对thinkPHP不精通,使用或开发的时候,最好直接使用完成版本的ThinkPHP. 关系模型定义: <?php /** * 继承自 RelationModel ,一定要在扩展中加入Model文件 * ThinkPHP\Extend\Model\RelationModel.class.php */ class MessageModel extends RelationModel{ //映射关系 protected $_link = array