写点什么

Chris Lattner 谈 Swift 3 和 Cocoa“重命名”

  • 2016-02-02
  • 本文字数:1103 字

    阅读完需:约 4 分钟

近日,在“ swift-evolution ”邮件列表中,Swift 创建者 Chris Lattner 在一篇博文中概述了 Swift 3 定义的一些指导原则,并明确表示该版本会带来破坏性修改。

由于新特性的设计和实现本身还存在许多未知,所以预测 Swift 3 最终会包含什么并不容易。虽然认识到了这一点,但 Lattner 还是着重指出了 Swift 3 的主要目标以及有助于该目标实现的几个方面:

Swift 3 […] 的目标是推动 Swift 下一波应用热潮,让 Swift 为更多的人所用。以下几个方面有望成为实现这一目标的动力:Linux(及其他平台)上的 Corelibs+Swift 开发成为现实,新用户出现;SwiftPM[Swift 包管理器] 成为一款优秀的工具,并形成了自己的特色;Swift 语言 /stdlib 进一步成熟。

鉴于 Swift 3 的范围已经明确定义,Lattner 补充道,许多“好的想法”将会被搁置,尤其是需要对语言进行重大扩展而又不影响核心模型的想法:

我认为,对于 Swift 3,我们有一贯的方法,我们一直致力于修复基本语言的核心缺陷、修复实现问题以及设计影响 ABI 稳定性的弹性功能,同时对语言进行小幅扩展。

一个例子是,灵活的成员初始化是一个可能不会纳入Swift 3 的特性,而另一个例子是,属性行为是一个在Swift 3 中备受期待的特性,该特性有助于消除一些同 lazy@NSManaged等实现相关的“编译器魔法(compiler magic)”。

此外,Swift 3 将带来大量的破坏性修改,这主要是由重命名 Cocoa 方法使它们更像 Swift 导致的:

由于 Cocoa 重命名将要落地,Swift2 到 Swift 3 将会不可避免地给代码带来破坏性变化,而我们将会另外构建令人印象深刻的迁移技术。

重命名 Cocoa 方法意味着若干变化,例如:

  • 移除不必要的指定期望参数类型的单词,简化方法名称,例如:

    let content = listItemView.text.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())

    将变成:

    let content = listItemView.text.trimming(.whitespaceAndNewlines)

  • 移除 Foundation API 的 NS 前缀,比如var NSDateComponentUndefined: Int { get }将变成var dateComponentUndefined: Int { get }

  • 方法声明中增加参数默认值,比如,为可空的尾部闭包参数指定默认值nil,为名字中包含optionsattributesinfo等的数组和字典参数指定默认值[][:]

Lattner 有关 Swift 3 并非源代码兼容的声明引发了一些抱怨。Lattner 本人表示,他认识到他们不能再这样下去,长时间按照“开发人员的步伐”修改Swift,但是,他希望从Swift 3 到4 的过渡会更简单些。不过,苹果计划提供一个迁移开关 -swift3-migration),使开发人员能够更轻松地将 Swift 2.2 的代码移植到 Swift 3。

查看英文原文: Chris Lattner on Swift 3 and Cocoa “Renamification”

2016-02-02 18:003135
用户头像

发布了 1008 篇内容, 共 419.7 次阅读, 收获喜欢 346 次。

关注

评论

发布
暂无评论
发现更多内容

Compose 中的主题

Changing Lin

8月日更

能源区块链研究 | 加密行业碳抵消有助于大众接纳比特币吗?

CECBC

fil有投资价值吗?投资fil的方式有哪些?

区块链 分布式存储 IPFS fil FIL投资

“遇见”未来“编程”语言,面向组件编程,送给在校学生

清风

Java 小程序 毕业设计

MySQL安全加固方法分享

Simon

MySQL 数据库 数据安全

走!跟着浪潮云洲去挖矿

云计算

导播上云,把 “虚拟演播厅” 搬到奥运村

阿里云CloudImagine

阿里云 视频处理 视频直播 视频云 云导播

区块链技术:为什么说波卡能加速区块链行业的发展?

CECBC

2021,编程语言如何选择?

程序员鱼皮

Java c++ Python JavaScript Go 语言

复旦大学附属中山医院钱琨:健康医疗大数据时代下的智慧医院建设

星环科技

大数据 医疗 数据能力

博文干货|5张图带你快速入门 Pulsar 的存储引擎 BookKeeper

Apache Pulsar

pulsar bookKeeper

数据加密和BCrypt哈希算法应用 | StartDT Tech Lab 15

奇点云

如何将知识引入机器学习模型提升泛化能力?

华为云开发者联盟

机器学习 算法 数据 模型 物理学

MySQL 系列教程之(五)DDL 操作:建库建表

若尘

MySQL 数据库 8月日更

Hadoop安装与常用操作命令

Mike

技术加持、服务先行:北鲲云超算平台助力生命科学领域研究与发展

北鲲云

摊牌了!哈利波特的“隐形斗篷”就是我想要的

百度开发者中心

人工智能 AI 最佳实践 行业资讯

FastApi-15-文件上传-3

Python研究所

FastApi 8月日更

出现吧,Python Web 菜谱系统的首页,不会前端技术,也能做

梦想橡皮擦

8月日更

30个Kafka常见错误小集合

王知无

堡垒机、防火墙以及跳板机分别是什么?

行云管家

云计算 运维 防火墙 堡垒机 跳板机

架构实战营-模块二作业

俞立夫

架构实战营

基于java springboot体育馆预约微信小程序源码(毕设)设计开发

清风

Java 小程序 源码 毕业设计

Android ANR应用无响应

W🌥

android 8月日更

AOC萌新探索:搭建和体验在线AOC环境

华为云开发者联盟

Python 网络 自动化运维 AOC 网络设备

史上最全Linux可观测最佳实践分享!建议先收藏~

观测云

云计算 Linux

【LeetCode】有效的字母异位词Java题解

Albert

算法 LeetCode 8月日更

【SpringBoot技术专题】「JWT技术专区」SpringSecurity整合JWT授权和认证实现

码界西柚

spring security springboot JWT 8月日更

Hadoop生态系统

Mike

为什么区块链是互联网的100倍?

CECBC

零代码以“王者荣耀”为例解析设计七原则

华为云开发者联盟

软件 设计原则 王者荣耀 单一职责

Chris Lattner谈Swift 3和Cocoa“重命名”_开源_Sergio De Simone_InfoQ精选文章