从Hello开始
As3
- trace(“Hello Eko”)
Swift
- println(“Hello Eko”)
挺象,有点隔壁王叔叔的意思。
常量和变量
As3
- public var str1:String=”eko”//变量
- public const str2:String=”eko”//常量
Swift
- var str1:String=”eko” //变量
- let str2:String=”eko” //常量
在swift中没有public private protected等修饰符号。同as3一样,swift中类型(:String,:Int)的标注也不是必须的。Swift可以推导出类型。
注释
As3与Swift是一样的
- //我是一行注释
- /*
- 我是多行注释
- */
分号
A3和Swift一样,都不强制要求在每条语句的结尾使用分号
整数
As3 提供了int和uint类型。其中int是32位带符号的整数。而unit是32位无符号整数。
Swift提供了Int和Uint类型。在32位平台上,Int长度为32位(Int32),在64位平台上则是64位(Int64)。Uint同Int。
浮点
As3,只有Number(53位)
Swift有Double(64位)和Float(32位)
布尔值
As3 中是Boolean
Swift 中是Bool
它们的布尔值有相同的常量true和false
元组
定义:把多个值组合成一个复合值。元组内的值可以使任意类型,并不要求是相同类型
As3 没有
Swift有
可选类型(optionals)
定义:如果有值就返回当前值,如果没有值就返回nil
这是Swift中独有的
if语句
As3的条件判断需要加”()”括号
- if(name==”eko”){}
Swift可以省略
- 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
赋值运算符
As3与Swift都使用“=”等号
数值运算
加减乘除等(+,-,*,/)AS3和Swift在这方面倒没什么不同。包括字符串的拼接也一样
“hello ”+”eko”。如果有一个变量str=“eko”,那么他怎么和字符串拼接呢。
As3
- “hello ”+str
Swift
- “hello \(str)”
区间运算
As3无
Swift有
例子:
- for index in 1...5 {
- println("\(index) * 5 = \(index * 5)")
- }
- // 1 * 5 = 5
- // 2 * 5 = 10
- // 3 * 5 = 15
- // 4 * 5 = 20
- // 5 * 5 = 25
这里面1…5就是一个闭区间
逻辑运算
相同
逻辑非( !a )
逻辑与( a && b )
逻辑或( a || b )
字符串:String
都是用String来表示,都是值类型,在传递过程中都会进行拷贝。
计算字符数量
As3:
- str.length
Swift:
- countElements(str)
数组:Array
As3:存数任意数据
- var arr:Array=new Array();
- var vec:Vector.<String>=new Vector.<String>;
Swift:必须存储相同类型的数据,比如都是Int,或者都是String。和As3的Vector类型很像。
- var arr:String[]=String[]()
字典:Dictionary
同数组一样,AS能中的key和value对类型没有限制。而Swift必须是相同类型的key和value
As3
- var dict = new Dictionary();
Swift
- var dict:Dictionary<String,String>= Dictionary<String,String>()
控制流程
if for while switch 一个都没少
基本都差不多,比较有意思的是switch
Swift中的switch不需要显式的break,而As3则相反
As3
- switch(a)
- {
- case “eko”:
- break;
- case “fancy”:
- break;
- }
Swift
- switch(a){
- case “eko”:
- case “fancy”:
- }
As3如果去掉break就会造成代码向下贯通执行两个case分支。而Swift想要向下贯通则需加入fallthrough
- switch(a){
- case “eko”:
- fallthrough
- case “fancy”:
- }
Swift的case更加精彩些例如:
多值匹配
- case “a”,”b”,”c”,”d”:
区间匹配
- case 1...3:
元组匹配
- case (0,0):
还能使用where
- case let (x,y) where x==y:
函数
As3
- function onSayHi():String
- {
- //做些有趣的事情吧
- }
Swift
- func onSayHi()->String{
- //做点什么呢
- }
返回值类型 As3是用冒号“:”,Swift是用一个箭头“->”。两个合体看上去就像两个鸡蛋一根火腿肠:->,竖起来的话看上去像是一根很邪恶的东西呢。
如果无返回值,As3中要写void,Swift可以省略
As3
- function onSayHi():void{}
Swift
- func onSayHi(){}
函数的参数
一般情况下两者没什么区别
As3
- function onSayHi(name:String):void{}
Swift
- func onSayHi(name:String){}
如果以为Swift不过如此的话,那就图样图森破了。
在Swift中可以有参数别名。供调用函数时使用,例如
- //定义函数
- func onSayHi(who name:String){
- pringln(“hi \(name)”)
- }
- //who 就是参数别名供外部使用,name供函数内部使用
- onSayHi(who:”eko”)
通常来说,参数别名从函数的第二个参数开始使用。我偷懒了,别太在意细节。
关于参数,As3是变量,可以重新赋值。而Swift是常量,不可重新赋值。
As3
- function onSayHi(name:String):void
- {
- name=”fancy”;
- trace(name);
- }
- onSayHi(“eko”) //输出fancy,说明在函数内部,参数name被改变了。
Swift
- func onSayHi(name:String){
- name=”fancy” //直接报错了
- }
如果要像As3那样就要在参数名前加前缀var
- func onSayHi(var name:String){
- name=”fancy”
- }
- onSayHi(“eko”)//输出 name:fancy
将函数作为参数
As3
- function onSayHi(name:String):String
- {
- return “hello ”+name;
- }
- function onSay(name:String,fun:Function)
- {
- trace(fun(name));
- }
- onSayHi(“eko”,onSayHi) //输出hello eko,函数onSay将函数onSayHi作为参数使用
Swift
- func onSayHi(name:String)->String{
- return “hello \(name)”
- }
- function onSay(name:String,fun:(String)->String){
- println(fun(name))
- }
- onSay(“eko”,onSayHi) //输出hello eko
以上可以看出As3中将函数作为参数时只需用一个Function 解决一切问题。而在Swift中需要将参数类型和返回类型都表示清楚:
(String)->String //括号中的就是参数类型,箭头后面的就是返回类型。
将函数作为返回类型
关键点同上
As3
- public function onSayHi(name:String):String
- {
- return "hello "+name;
- }
- public function onGetFun():Function
- {
- return onSayHi;
- }
- var fun:Function=onGetFun();
- trace(fun("eko")); //输出 hello eko
Swift
- func onSayHi(name:String)->String{
- return "hello \(name)"
- }
- func onGetFun()->(String)->String{
- return onSayHi
- }
- var fun:(String)->String=onGetFun()
- 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进阶 Swift4Swift进阶 Swift4Swift进阶 Swift4Swift进阶 Swift4Swift进阶 Swift4Swift进阶 Swift4Swift进阶 Swift4Swift进阶 Swift4Swift进阶 Swift4Swift进阶 Swift4Swift进阶 Swift4Swift进阶 Swift4Swift...
3DTouch综合教程OC+Swift4.0,对3DTouch感兴趣的同学有很大的帮助。
iOS开发 最新语言swift3 中文版本
Swift 3d V6 汉化 Swift 3d V6 汉化 Swift 3d V6 汉化 Swift 3d V6 汉化
Swift版 3D Touch Demo
Swift3编写游戏
swift4官方英文版加上swift3权威中文版,两个版本差别不大,可以对照学习 可以对照学习 可以对照学习 可以对照学习
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 3rd English | 30 Apr. 2018 | ISBN: 149198757X | 500 Pages | EPUB | 13.58 MB
Swift3D Flash3D的好帮手,界面干净清爽,简单明了,教程讲解细致入微,令你一看就会。
基于Swift 3 的入门教程
Up to date for iOS10, Xcode 8 & Swift 3
为了让大家快速了解SWIFT 3D的一些概念,我们先做一个简单的文字转到效果,我将一步步教你怎么做,请跟着做...............
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 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 ...
objc.io Advanced Swift, update to swift 4.0. objc.io Advanced Swift, update to swift 4.0.
This course helps you develop client-side and server-side applications, as well as web services using Swift. We'll begin with exploring the fundamental Swift programming concepts, language structure, ...
Swift3 中文手册.CHM、Swift3 参考手册