Xcode 7 beta发布,Swift 2.0带来哪些新变化?(二)

更新时间:2015-06-11 09:42:57 点击次数:3015次

详解Swift语言的改变



声明:


[cpp] view plaincopy

  1. func printFunction(str: String, newline: Bool)  

  2. func printMethod(str: String, newline: Bool)  

  3. func printFunctionOmitParameterName(str: String, _ newline: Bool)  


调用:


[cpp] view plaincopy

  1. printFunction(“hello”, newline: true)  

  2. printMethod(“hello”, newline: true)  

  3. printFunctionOmitParameterName("hello"true)   




避免采用如下位运算的调用方式:


[cpp] view plaincopy

  1. // Swift 1.2:  

  2. object.invokeMethodWithOptions(.OptionA | .OptionB)  

  3. object.invokeMethodWithOptions(nil)  

  4. if options & .OptionC == .OptionC {  

  5.  // .OptionC被设置  

  6. }  


选项设置支持字面量语法和set样式的调用,如contains:


[cpp] view plaincopy

  1. object.invokeMethodWithOptions([.OptionA, .OptionB])  

  2. object.invokeMethodWithOptions([])  

  3. if options.contains(.OptionC) {  

  4.  // .OptionC is set  

  5. }  





[cpp] view plaincopy

  1. struct MyOptions: OptionSetType {  

  2.  let rawValue: Int  

  3.  static let TuringMachine = MyOptions(rawValue: 1)  

  4.  static let LambdaCalculus = MyOptions(rawValue: 2)  

  5.  static let VonNeumann = MyOptions(rawValue: 4)  

  6. }  

  7. let churchTuring: MyOptions = [.TuringMachine, .LambdaCalculus]   




Swift 1.2:


[cpp] view plaincopy

  1. do {  

  2. ...  

  3. while <condition>  


Swift 2.0:


[cpp] view plaincopy

  1. repeat {  

  2. ...  

  3. while <condition>   




Swift 1.2:


[cpp] view plaincopy

  1. func print(<stuff to print>)  

  2. func println(<stuff to print>)  


Swift 2.0:


[cpp] view plaincopy

  1. func print(<stuff to print>, appendNewline: Bool = true)  




参数纵览语法:


[cpp] view plaincopy

  1. - Parameters:  

  2.  - x: ...  

  3.  - y: ...  


单独参数语法:


[cpp] view plaincopy

  1. - parameter x: ...  

  2. - parameter y: ..  


返回值:


[cpp] view plaincopy

  1. - returns: ...  


其他需要在QuickHelp中高亮的语法字段,可以参考Markdown语法。



这意味着,以前的这样的写法:


[cpp] view plaincopy

  1. var (a : Int, b : Float) = foo()  


需要被重构为:


[cpp] view plaincopy

  1. var (a,b) : (Int, Float) = foo()  


其实这个改动原因是为了和元组用法相区分。




[cpp] view plaincopy

  1. func foo<T>() { } // error: generic parameter ’T’ is not used in function signature   





[cpp] view plaincopy

  1. class MyClass : NSObject {  

  2.  @objc(theProperty) property: String // Objective-C属性被命名为“theProperty”  

  3.  // Objective-C getter访问器被命名为“theProperty”  

  4.  // Objective-C setter访问器被命名为“setTheProperty:”  

  5. }  


本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是一个个人学习交流的平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽,造成漏登,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

回到顶部
嘿,我来帮您!