您好,欢迎来电子发烧友网! ,新用户?[免费注册]

您的位置:电子发烧友网>源码下载>数值算法/人工智能>

Swift 2.2 的新特性介绍

大小:0.7 MB 人气: 2017-10-11 需要积分:1
导读:本文来自SwiftGG翻译组,作者@walkingway基于苹果Swift官方博客中Ted Kremenek所撰写的“Swift 2.2 Released!”文章进行了关于Swift 2.2新特性的介绍翻译以及小试牛刀,Swift 2.2虽然是个小版本,但也有许多值得开发者注意的内容。
  Swift 2.2 随着 iOS 9.3 一同闪亮登场,相较于 Swift 2.1, 2.2 版本做出了许多调整,从其调整方向上我们也能一窥 Swift 3.0 的影子,以下内容主要来自于苹果 Swift 官方 Blog,接下来就让我们进入正题,一睹 Swift 2.2 的庐山真面目:
  允许更多的关键字来做参数标签
  SE-0001: Allow (most) keywords as argument labels
  参数标签是 Swift 中非常 cool 的一个特性,我们可以这么写:
  fori in1.stride(to: 9, by: 2) { print(i) }
  这个函数很简单,由 1 开始,每次加 2,返回一系列的值,最后的结果要小于 9:
  1 3 5 7
  上面的函数如果参数前没有 to 或 by 标签,即 stride(9, 2) 那么代码将失去自解释性,别人也很难猜到这些参数的实际用途。
  又假设我们要获取集合中某个值对应的索引,可以声明如下方法:
  indexOf(value, in: collection)
  但是注意在 Swift 2.2 之前的版本,上面这种写法 Xcode 会报错,因为 in 是一个关键字,想要使用这些关键字必须加上单引号:
  indexOf(value, `in`: collection)
  以前我们定义新的 API 的时候,通常也要避免与这些关键字撞车,比如用 within 代替 in。在我们导入 Objective-C APIs 的时候通常会碰到这些问题:
  event.touchesMatching([.Began, .Moved], `in`: view) NSXPCInterface(`protocol`: SomeProtocolType.Protocol)
  而在 Swift 2.2,我们开放了除 inout, var 和 let 以外所有的关键字,现在他们都可以作为参数 label 来使用了(而不用加单引号)关于语法的影响主要注意以下三方面:
  1、函数调用中的关键字可以随意使用了,不会产生什么歧义,因为方法调用时 “:” 总是伴随着参数标签出现。
  2、函数/子类化/初始化 声明:除 inout, var 和 let 这三个关键字之外,使用其他关键字没有什么歧义,因为这些关键字后面总是跟随着 ‘:’ 或 ‘_’ 比如:
  func touchesMatching(phase: NSTouchPhase, inview: NSView?)-》Set《NSTouch》
  假如你想在函数声明中使用 inout, var 和 let 做为参数名的话,还是要加单引号:
  func addParameter(name: String, `inout`: Bool)
  3、如果在函数类型中这三个关键字(inout,var,let)出现的话,是不需要加单引号的,这是因为在这种情况下参数名后总是跟着 ‘:’
  (NSTouchPhase, in: NSView?)-》Set《NSTouch》 (String, inout: Bool)-》Void
  元组对象可以进行比较操作了
  SE-0015: Tuple comparison operators
  元组是以逗号分割的值列表:
  letdeveloper = (“Numbbbbb”, “Shanks”) letdesigner = (“Cee”, “Sai”)
  以前想要比较两个元组,我们需要自己重载操作符
  func == (t1: (T, T), t2: (T, T))-》Bool { returnt1.0== t2.0&& t1.1== t2.1}
  抛开每次都要写这一坨无趣的代码不说,而且只能比较包含两个元素的元组。不过在 Swift 2.2 中,我们可以直接比较两个元组了:
  letdeveloper = (“Numbbbbb”, “Shanks”) letdesigner = (“Cee”, “Sai”) ifdeveloper == designer { print(“Matching tuples!”) } else{ print(“Non-matching tuples!”) }
  Swift 2.2 允许不超过 6 个元素的元组之间进行比较,限制元组的元素个数主要有两个原因:
  每一次比较都需要在基本库中添加额外的代码;元组的元素过多并不是一种好的编程风格,考虑用结构体代替。
  可以尝试下面两个元组比较:
  letdeveloper = (“Numbbbbb”, 23) letdesigner = (“Cee”, “Sai”)
  不出意外地报错了:
  Swift 2.2 的新特性介绍
Swift 2.2 的新特性介绍

非常好我支持^.^

(0) 0%

不好我反对

(0) 0%

Swift 2.2 的新特性介绍下载

相关电子资料下载

      发表评论

      用户评论
      评价:好评中评差评

      发表评论,获取积分! 请遵守相关规定!