`

当AS3遇见Swift

    博客分类:
  • IOS
 
阅读更多

Hello开始

As3

  1. trace(“Hello Eko”)
复制代码

 

 


Swift

  1. println(“Hello Eko”)
复制代码

 

 

 

挺象,有点隔壁王叔叔的意思。

常量和变量

As3

   

  1.       public var str1:String=”eko”//变量
  2.       public const str2:String=”eko”//常量
复制代码


         

Swift

  1.          var str1:String=”eko” //变量
  2.          let str2:String=”eko” //常量
复制代码

 

 

 

swift中没有public private protected等修饰符号。同as3一样,swift中类型(:String:Int)的标注也不是必须的。Swift可以推导出类型。

注释

As3Swift是一样的

  1. //我是一行注释
  2. /*
  3.          我是多行注释
  4. */
复制代码

 

 

 

分号

A3Swift一样,都不强制要求在每条语句的结尾使用分号

整数

As3 提供了intuint类型。其中int32位带符号的整数。而unit32位无符号整数。

Swift提供了IntUint类型。在32位平台上,Int长度为32位(Int32),在64位平台上则是64位(Int64)。UintInt

浮点

As3,只有Number53位)

SwiftDouble64位)和Float32位)

布尔值

As3 中是Boolean

Swift 中是Bool

它们的布尔值有相同的常量truefalse

元组

定义:把多个值组合成一个复合值。元组内的值可以使任意类型,并不要求是相同类型

As3 没有

Swift

可选类型(optionals

定义:如果有值就返回当前值,如果没有值就返回nil

这是Swift中独有的

if语句

As3的条件判断需要加”()”括号

  1. if(name==”eko”){}
复制代码

 

 


Swift可以省略

  1. if name==”eko” {}
复制代码

 

 

 

默认值

As3

int:0

unit:0

String:null

Number:NaN

Array:null

Object:null

Boolean:flase

Swift 没有默认值,只有当类型被声明为可选类型的时候,会被自动设置为nil

var eko:String//加了问号(?)就变成可选类型了

那么在eko被赋值之前就是nil

赋值运算符

As3Swift都使用“=”等号

数值运算

加减乘除等(+,-,*,/)AS3Swift在这方面倒没什么不同。包括字符串的拼接也一样

“hello ”+”eko”。如果有一个变量str=“eko”,那么他怎么和字符串拼接呢。

As3

  1. “hello ”+str
复制代码

 

 


Swift

  1. “hello \(str)”
复制代码

 

 

 

区间运算

As3

Swift

例子:

  1. for index in 1...5 {
  2. println("\(index) * 5 = \(index * 5)")
  3. }
  4. // 1 * 5 = 5
  5. // 2 * 5 = 10
  6. // 3 * 5 = 15
  7. // 4 * 5 = 20
  8. // 5 * 5 = 25
复制代码

 

 

 


这里面1…5就是一个闭区间


逻辑运算

相同

逻辑非( !a

逻辑与( a && b

逻辑或( a || b

 

 

字符串:String
都是用String来表示,都是值类型,在传递过程中都会进行拷贝。
计算字符数量
As3:

  1. str.length
复制代码

Swift:

  1. countElements(str)
复制代码

数组:Array
As3:存数任意数据

  1. var arr:Array=new Array();
  2. var vec:Vector.<String>=new Vector.<String>;
复制代码

Swift:必须存储相同类型的数据,比如都是Int,或者都是String。和As3的Vector类型很像。

  1. var arr:String[]=String[]()
复制代码

字典:Dictionary
同数组一样,AS能中的key和value对类型没有限制。而Swift必须是相同类型的key和value
As3

  1. var dict = new Dictionary();
复制代码

Swift

  1. var dict:Dictionary<String,String>= Dictionary<String,String>()
复制代码

控制流程
if for while switch 一个都没少
基本都差不多,比较有意思的是switch
Swift中的switch不需要显式的break,而As3则相反
As3

  1. switch(a)
  2. {
  3.         case “eko”:
  4.                 break;
  5.         case “fancy”:
  6.                 break;
  7. }
复制代码

Swift

  1. switch(a){
  2. case “eko”:
  3. case “fancy”:
  4. }
复制代码

As3如果去掉break就会造成代码向下贯通执行两个case分支。而Swift想要向下贯通则需加入fallthrough

  1. switch(a){
  2. case “eko”:
  3. fallthrough
  4. case “fancy”:
  5. }
复制代码

Swift的case更加精彩些例如:
多值匹配

  1. case “a”,”b”,”c”,”d”:
复制代码

区间匹配

  1. case 1...3:
复制代码

元组匹配

  1. case (0,0):
复制代码

还能使用where

  1. case let (x,y) where x==y:
复制代码

函数
As3

  1. function onSayHi():String
  2. {
  3. //做些有趣的事情吧
  4. }
复制代码

Swift

  1. func onSayHi()->String{
  2. //做点什么呢
  3. }
复制代码

返回值类型 As3是用冒号“:”,Swift是用一个箭头“->”。两个合体看上去就像两个鸡蛋一根火腿肠:->,竖起来的话看上去像是一根很邪恶的东西呢。
如果无返回值,As3中要写void,Swift可以省略
As3

  1. function onSayHi():void{}
复制代码

Swift

  1. func onSayHi(){}
复制代码

函数的参数
一般情况下两者没什么区别
As3

  1. function onSayHi(name:String):void{}
复制代码

Swift

  1. func onSayHi(name:String){}
复制代码

如果以为Swift不过如此的话,那就图样图森破了。
在Swift中可以有参数别名。供调用函数时使用,例如

  1. //定义函数
  2. func onSayHi(who name:String){
  3.         pringln(“hi \(name)”)
  4. }
  5. //who 就是参数别名供外部使用,name供函数内部使用
  6. onSayHi(who:”eko”)
复制代码

通常来说,参数别名从函数的第二个参数开始使用。我偷懒了,别太在意细节。

关于参数,As3是变量,可以重新赋值。而Swift是常量,不可重新赋值。
As3

  1. function onSayHi(name:String):void
  2. {
  3.         name=”fancy”;
  4.         trace(name);
  5. }
  6. onSayHi(“eko”)  //输出fancy,说明在函数内部,参数name被改变了。
复制代码

Swift

  1. func onSayHi(name:String){
  2.         name=”fancy” //直接报错了
  3. }
复制代码

如果要像As3那样就要在参数名前加前缀var

  1. func onSayHi(var name:String){
  2.         name=”fancy”
  3. }
  4. onSayHi(“eko”)//输出 name:fancy
复制代码

将函数作为参数
As3

  1. function onSayHi(name:String):String
  2. {        
  3. return “hello ”+name;
  4. }
  5. function onSay(name:String,fun:Function)
  6. {
  7.         trace(fun(name));
  8. }
  9. onSayHi(“eko”,onSayHi) //输出hello eko,函数onSay将函数onSayHi作为参数使用
复制代码

Swift

  1. func onSayHi(name:String)->String{
  2.         return “hello \(name)”
  3. }
  4. function onSay(name:String,fun:(String)->String){
  5.         println(fun(name))
  6. }
  7. onSay(“eko”,onSayHi) //输出hello eko
复制代码

以上可以看出As3中将函数作为参数时只需用一个Function 解决一切问题。而在Swift中需要将参数类型和返回类型都表示清楚:
(String)->String  //括号中的就是参数类型,箭头后面的就是返回类型。

将函数作为返回类型
关键点同上
As3

  1. public function onSayHi(name:String):String
  2. {
  3.         return "hello "+name;
  4. }
  5. public function onGetFun():Function
  6. {
  7.         return onSayHi;
  8. }
  9. var fun:Function=onGetFun();
  10. trace(fun("eko")); //输出 hello eko
复制代码

Swift

  1. func onSayHi(name:String)->String{
  2.     return "hello \(name)"
  3. }
  4. func onGetFun()->(String)->String{
  5.     return onSayHi
  6. }
  7. var fun:(String)->String=onGetFun()
  8. println(fun("eko"))
复制代码

嵌套函数
As3和Swift都很欢快的支持了

闭包
As3和Swift都支持

As3

Swift中似乎没有包,包路径的概念。因而显得简洁的多。

复制代码
package
{
         public class ShuaiGe
         {
        

         }
}
复制代码

 

Swift类

class ShuaiGe{

}

 

类的构造

As3有构造函数,Swift有构造器,不同的是Swift可以有多个同名但是不同参数的构造器

As3

class ShuaiGe
{
         function ShuaiGe(){}//构造函数
}

Swift

class ShuaiGe{
         init(){}  //构造器
         init(name:String){}  //构造器
        init(age:Int){}  //构造器
}

 

类的析构

析构函数在实例被销毁前调用。As3无,Swift有

Swift

deinit{
         // 执行析构过程
}

类的继承

As3使用关键字extends Swift使用冒号

As3

复制代码
package
{
    public class Eko extends Shuaige
    {

    }
}
复制代码

Swift

class Eko:ShuaiGe{
 
}

 

类的属性

关于类的属性,Swift就比As3精彩的多了例如@lazy延迟存储,属性监视器willSet在设置新值之前调用。didSet在新值设置之后调用。

类的静态属性

As3使用关键字static

Swift类使用class关键字,结构体和枚举使用static关键字

 

类属性的覆盖

都使用override关键字,能够对方法和属性进行覆盖。

Swift使用@final能够防止覆盖例如

@final var, @final func, @final class func 以及 @final sunscript

 

As3

使用final关键字在class前或者后表示不能继承。使用 private关键字能表示属性或方法私有而不能被覆盖

 

类的实例本身

As3 使用this关键字,Swfit使用self关键字。

 

自动引用计数器

As3和Swift都是使用计数器来跟踪和管理内存,进行垃圾回收。

 

 

分享到:
评论

相关推荐

    Swift开发指南.azw3

    Swift开发指南.azw3

    swift4+swift3 中英版

    在本资料中,我们有两个版本的Swift编程指南:Swift4的官方英文版和Swift3的权威中文版。 Swift4是Swift的第四个主要版本,它在Swift3的基础上进行了改进和优化。虽然两个版本在语法上差异不大,但Swift4引入了一些...

    Swift版 3D Touch

    Swift版的3D Touch技术是苹果公司在iOS 9中引入的一种增强交互方式,它为iPhone用户提供了一种全新的、更深层次的触控体验。通过压力感应,3D Touch不仅增加了快捷菜单(Quick Actions)和Peek & Pop功能,还使得...

    Swift进阶 Swift4

    Swift进阶 Swift4Swift进阶 Swift4Swift进阶 Swift4Swift进阶 Swift4Swift进阶 Swift4Swift进阶 Swift4Swift进阶 Swift4Swift进阶 Swift4Swift进阶 Swift4Swift进阶 Swift4Swift进阶 Swift4Swift进阶 Swift4Swift...

    swift3 中文版

    iOS开发 最新语言swift3 中文版本

    Swift 3d V6 汉化

    Swift 3d V6 汉化 Swift 3d V6 汉化 Swift 3d V6 汉化 Swift 3d V6 汉化

    swift-swift3model模型解析

    Swift3是Swift的第三个主要版本,带来了一些重要的语法变化和改进。本篇文章将深入探讨Swift3中如何构建和解析模型。 在Swift3中,模型对象是用来封装应用程序的数据的。这些数据可以来自数据库、网络API或其他数据...

    swift-ASDownload功能更全面的下载器

    4. **进度保存**:当应用程序退出或者被系统杀死时,Swift-ASDownload会自动保存当前的下载进度,下次启动时可以继续之前未完成的下载,保证了用户体验的连续性。 5. **下载数量控制**:为了优化网络使用和防止过度...

    iOS 10 in Swift 3 非常好的ios书

    《iOS 10 in Swift 3》是一本深入探讨iOS开发的专业书籍,专注于利用Swift 3编程语言在iOS 10平台上构建应用程序。Swift 3是Apple推出的一种现代化、安全且强大的编程语言,旨在简化iOS、macOS、watchOS以及tvOS的...

    Intermediate iOS Programming with Swift: iOS 10 and Swift 3

    Intermediate iOS Programming with Swift: iOS 10 and Swift 3 by Simon Ng English | 21 Jun.... As you follow the book to build apps, you will learn the new features of Swift and iOS SDK along the way.

    Learning Swift 【2018 第3版】

    Learning Swift 3rd English | 30 Apr. 2018 | ISBN: 149198757X | 500 Pages | EPUB | 13.58 MB

    swift3中文文档.pdf

    3. **类型安全性**:Swift 3.0增强了类型系统,提高了错误处理的能力,减少了隐式转换,降低了程序出错的可能性。 4. **函数和方法的改进**:函数签名的重构,以及引入了泛型参数和参数标签的改进,使得函数和方法...

    swift3d界面介绍

    Swift3D Flash3D的好帮手,界面干净清爽,简单明了,教程讲解细致入微,令你一看就会。

    Swift4.0.3官方原版文档The Swift Programming Language(Swift4.0.3)

    3. **泛型**:Swift的泛型允许编写可重用的代码,这些代码可以处理多种数据类型。泛型在函数、类、结构体和枚举中都有应用。 4. **协议与扩展**:Swift中的协议类似于接口,定义了一组方法和属性的规范。扩展则可以...

    Swift 3 XCode 8新篇

    ### Swift 3与Xcode 8的关键更新及变化 #### 一、Swift 3的核心变更 Swift 3 是苹果为了使 Swift 更加现代化并更好地与其他框架兼容所做的一次重大更新。这一版本不仅对语法进行了调整,还改进了对 Cocoa Touch ...

    Professional.Swift.1119016770

    This code-intensive, practical guide walks you through Swift best practices as you learn the language, build an application, and refine it using advanced concepts and techniques. Organized for easy ...

    Swift进阶(Swift 3版本)

    Swift进阶

    Swift 3 Object-Oriented Programming

    Swift 3 Object Oriented Programming - Second Edition by Gastón C. Hillar English | 6 Mar. 2017 | ISBN: 1787120392 | 254 Pages | EPUB/PDF (conv) | 32.1 MB Key Features Leverage the most efficient ...

    pw-swift-core-SRU2017-7.9.3

    "pw-swift-core-SRU2017-7.9.3" 是一个开源的第三方Java库,专门设计用于解析和处理银行间的SWIFT报文。这个库的主要功能是为开发者提供工具,以便他们能够有效地封装和解析SWIFT标准化的金融通信格式。SWIFT(环球...

Global site tag (gtag.js) - Google Analytics