[anyObject] 类型推断 Type Casting

在swift 中,如果遍历一个集合,可能就需要用到类型推断

方式一:先把一个确定的集合进行推断,之后在遍历,适合单一的元素类型。
 let constraints = self.constraints() as! [NSLayoutConstraint];
        var item : NSLayoutConstraint? = nil;
        for constraint in constraints {
            if constraint.firstAttribute == attribute &&
                constraint.constant == constant{
                    item = constraint;
                    break;
            }
        }
        return item;

方式二:适合多种类型的混合,在for 循环里,如果是多种类型,就进行多种类型的判断添加 if-else

var item : NSLayoutConstraint? = nil;
        for constraint in self.constraints() {
            if constraint is NSLayoutConstraint {
                if constraint.firstAttribute == attribute &&
                    constraint.constant == constant{
                    item = constraint;
                    break;
                }
            }
        }
时间: 2024-08-29 23:51:15

[anyObject] 类型推断 Type Casting的相关文章

十七、类型绑定 Type Casting

1. 概述 Type Casting 的作用: 1)检查某个实例的类型.使用 is 关键字. 2)将某个实例的类型绑定为其他类型来访问.使用 as 关键字. 3)检查某种类型是否实现了协议的方法. 2. 引例,定义三个类: class MediaItem { var name: String init(name: String) { self.name = name } } class Movie: MediaItem { var director: String init(name: Stri

TypeScript Type Innference(类型推断)

在这一节,我们将介绍TypeScript中的类型推断.我们将会讨论类型推断需要在何处用到以及如何推断. 基础 在TypeScript中,在几个没有明确指定类型注释的地方将会使用类型推断来提供类型信息. var x = 3; 变量"x"的值被推断为number.这种推断发生在变量或者成员初始化.设置参数默认值.决定函数返回类型的时候. 最佳公共类型 当需要从多个表达式中进行类型推断的时候,这些表达式的类型将会用来推断出一个"最佳公共类型".例如: var x = [0

现代C++之理解模板类型推断(template type deduction)

理解模板类型推断(template type deduction) 我们往往不能理解一个复杂的系统是如何运作的,但是却知道这个系统能够做什么.C++的模板类型推断便是如此,把参数传递到模板函数往往能让程序员得到满意的结果,但是却不能够比较清晰的描述其中的推断过程.模板类型推断是现代C++中被广泛使用的关键字auto的基础.当在auto上下文中使用模板类型推断的时候,它不会像应用在模板中那么直观,所以理解模板类型推断是如何在auto中运作的就很重要了. 下面将详细讨论.看下面的伪代码: templ

[Effective Modern C++] Item 1. Understand template type deduction - 了解模板类型推断

条款一 了解模板类型推断 基本情况 首先定义函数模板和函数调用的形式如下,在编译期间,编译器推断T和ParamType的类型,两者基本不相同,因为ParamType常常包含const.引用等修饰符 template<typename T> void f(ParamType param); // 函数模板形式 f(expr); // 函数调用 存在T的类型即为expr类型的情况,如下T为int templat<typename T> void f(const T& param

Swift 集合类型(Collection Type) 之 字典(dictionary)(官方文档翻译及总结)

Swift语言提供经典的数组和字典两种集合类型来存储集合数据.数组和字典中存储的数据值类型必须明确.这意味着我们不能把不正确的数据类型插入其中.Swift对显式类型集合的使用确保了我们的代码对工作所需要的类型非常清楚.也让我们在开发中可以早早的找到任何的类型不匹配错误.如果你用变量(var)创建的集合,这些集合就是可变的(增删改).如果用常理创建的,这些集合是不能被操作的. 注意: 如果集合的元素是不变的,那就将集合声明为常量.这样Swift编译器能对你创建的集合做性能优化. 1. 数组(arr

泛型中的类型约束和类型推断

前一篇文章介绍了泛型的基本概念.在本文中,我们看一下泛型中两个很重要的特性:类型约束和类型推断. 类型约束 相信你还记得前面一篇文章中的泛型方法,在这个泛型方法中,我们就使用了类型约束. 类型约束(type constraint)进一步控制了可指定的类型实参,当我们创建自己的泛型类型或者泛型方法的时候,类型约束是很有用的. 回到前一篇例子中的泛型方法,这个泛型方法就要求可指定的类型实参必须实现了IComparable接口. 为什么会有这个约束呢?原因很简单,因为我们在泛型方法的实现中直接调用T类

scala学习手记20 - 方法返回类型推断

除了推演变量的类型,scala也会推演方法的返回类型.不过这里有一处需要注意:方法返回类型的推演依赖于方法的定义方式.如果用等号"="定义方法,scala就会推演方法返回类型:否则,它就认为方法的返回为void.看一个例子: def printMethodInfo(methodName: String) { println("The return type of " + methodName + " is " + getClass().getDe

JDK将新增局部变量类型推断功能

OpenJDK 提出一个新的计划, 准备为 Java 增加局部变量类型推断功能(local-variable type inference capability), 这让代码编写更简单, 同时也保证原有的静态类型安全特性. 该计划于3月8号提出,文档地址为: JEP-286(JDK Enhancement Proposal,JDK增强方案). 目前没有指定具体在哪个JDK版本中实现. 提案中说: "We seek to improve the developer experience by re

浅谈C#中的常量、类型推断和作用域

浅谈C#中的常量.类型推断和作用域 作者: 字体:[增加 减小] 类型:转载 时间:2013-12-19我要评论 这篇文章主要介绍了C#中的常量.类型推断和作用域,有需要的朋友可以参考一下 一.常量常量是其值在使用过程中不会发生变化的变量.在声明和初始化变量时,在变量前面家关键字const,就可以把该变量指定为一个常量: const int a=100;//a的值将不可以改变 常量的特征: 1.常量必须在声明时初始化.指定了其值以后,就不能再修改了.2.常量的值必须能在编译时用于计算.因此不能从