在将项目更新到swift3.0之后,在一些controller头部会出现 比较运算符的方法

// FIXME: comparison operators with optionals were removed from the Swift Standard Libary.

// Consider refactoring the code to use the non-optional operators.

fileprivate func < <T : Comparable>(lhs: T?, rhs: T?) -> Bool {

switch (lhs, rhs) {

case let (l?, r?):

return l < r

case (nil, _?):

return true

default:

return false

}

}

// FIXME: comparison operators with optionals were removed from the Swift Standard Libary.

// Consider refactoring the code to use the non-optional operators.

fileprivate func > <T : Comparable>(lhs: T?, rhs: T?) -> Bool {

switch (lhs, rhs) {

case let (l?, r?):

return l > r

default:

return rhs < lhs

}

}

在swift3.0中移除了这四种运算符。也就是移除了Optional比较运算符

public func < <T : Comparable>(lhs: T?, rhs: T?) -> Bool
public func > <T : Comparable>(lhs: T?, rhs: T?) -> Bool
public func <= <T : Comparable>(lhs: T?, rhs: T?) -> Bool
public func >= <T : Comparable>(lhs: T?, rhs: T?) -> Bool

Swift的进化给出了如下动机说明

let a: Int? = 4
let b: Int = 5
a < b // b is coerced from "Int" to "Int?" to match the parameter type. 根据上面的代码,如果没有去掉可选类型的比较,b会被强转换为 "Int?" 由此,参照下边的代码可以更好地理解,去掉这个方法的必要,如果没有去掉强转,一些比较就会出现意想不到的结果。
struct Pet {
let age: Int
} struct Person {
let name: String
let pet: Pet?
} let peeps = [
Person(name: "Fred", pet: Pet(age: 5)),
Person(name: "Jill", pet: .None), // no pet here
Person(name: "Burt", pet: Pet(age: 10)),
] let ps = peeps.filter { $0.pet?.age < 6 } ps == [Fred, Jill] // if you don’t own a pet, your non-existent pet is considered to be younger than any actual pet

Swift3.0 更新后出现比较运算符方法的更多相关文章

  1. 关于Android 7.0更新后调用系统相机及电筒问题

    android升级到7.0后对权限又做了一个更新即不允许出现以file://的形式调用隐式APP,需要用共享文件的形式:content:// URI 因为系统相机是提供的共享 Provider , C ...

  2. Swift3.0都有哪些变化

    从写第一篇Swift文章的时候到现在Swift已经从1.2发展到了今天的3.0,这期间由于Swift目前还在发展阶段并不能向下兼容,因此第一篇文章中的部分代码在当前的Xcode环境中已经无法运行.在W ...

  3. (细节控)swift3.0与融云IMKIT开发问题(一部分) override func onSelectedTableRow Method does not override any method from its superclass

    原官网文档方案如下,在swift3.0的情况下出现 override func onSelectedTableRow  Method does not override any method from ...

  4. Swift3.0 功能一(持续更新)

    修改项目名称两种方式 1.Bundle name 2.Bundle display name try 三种处理异常的方式 // 在swift中提供三种处理异常的方式 // 方式一:try方式 程序员手 ...

  5. Dynamics CRM9.0更新了Chrome后菜单按钮变形

    前段时间Chorme更新后Dynamics CRM9.0的系统菜单样式变的很难看 具体修改方法如下: 找到Dynamics CRM安装目录C:\Program Files\Microsoft Dyna ...

  6. WebGIS中以version方式实现代码更新后前端自动读取更新代码的方法

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1. 前言 GIS代码进行更新后,由于用户前端已有缓存,导致更新的功能不 ...

  7. Win10更新后蓝牙出现故障的解决方法

    昨天Win10自动更新后,我发现我的键盘突然就不管用了,检查了一下发现原来蓝牙没有打开,同时任务栏中的蓝牙图标也不见了. 不久之前,这样的情况已经出现过了一次,那次好像更新系统后就好了,但这次是系统更 ...

  8. WIN10下VS CODE 更新后拓展宿主意外终止问题解决方法(每次系统更新都要删除一次git)

    S CODE最近更新后,一打开就会出现拓展宿主意外终止的错误,点重新加载等都不好用. 出现这个问题主要是和git有关,做如下操作处理就好: 打开vscode安装文件夹->resource文件夹- ...

  9. Swift2.3 --> Swift3.0 的变化

    Swift3.0语法变化 首先和大家分享一下学习新语法的技巧: 用Xcode8打开自己的Swift2.3的项目,选择Edit->Convert->To Current Swift Synt ...

随机推荐

  1. Delphi ControlCount和ComponentCount的区别

    ComponentCount指打开的窗体所拥有的控件个数,包含所有子组件.孙组件(子组件内的子组件) 如上图,Form1的ComponentCount是13,而Panel1的ComponentCoun ...

  2. jq 图片裁剪

    1.html <div class="jcropbox" style="display: none"> <img src="&quo ...

  3. angular的post提交

    用下来明显感觉jquery的post提交比ng的post提交好用很多 一开始,用angularjs的$http提交的数据,在php服务器端无法通过 因为jQuery会把作为JSON对象的data序列化 ...

  4. javascript——面向对象程序设计(2)

    <script type="text/javascript"> //1.理解原型对象 //2.原型与in操作符 //3.更简单的原型语法 //4.原型的动态性 //5. ...

  5. underscorejs-size学习

    2.24 size 2.24.1 语法: _.size(list) 2.24.2 说明: 返回列表的长度. 示例一:返回数组.对象.字符串的长度 //取数组的长度 var length length ...

  6. apache 服务器端口被IIS服务器占用

    今天遇到一个问题 同事机子上安装了wamp运行环境,所有服务也打开了,把dede系统放到了www目录下面,但是打开localhost网址,一直是跳转到一个IIS的web服务器主页 想不到是什么问题,又 ...

  7. Android单元测试初探——Instrumentation(转载)

    学习Android有一段时间了,虽然前段时间对软件测试有了一些了解,不过接触android的单元测试却是头一次.这几天在物流大赛上也用了不少时间,所以对于android的单元测试没有太深入的研究,所以 ...

  8. Android 中文 API (29) —— CompoundButton

    前言 本章内容是android.widget.CompoundButton,翻译来自德罗德,再次感谢德罗德 !期待你一起参与Android API 的中文翻译,联系我over140@gmail.com ...

  9. php开发学习目录

    最近有个项目需要使用php,没办法学习吧 本文不适合没有任何语言的初学者,也不适合 php熟练者.只是个人工作中需要的总结 目录 一.环境安装 1.1 apache 简介安装使用等 1.2 php 5 ...

  10. BZOJ 1051 受欢迎的牛

    Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎. 这种关系是具有传递性的,如果A认为B受欢迎,B认为C受欢迎,那么牛A也认 ...