字符串: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 ...:
元组匹配
case (,):
还能使用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(二)的更多相关文章
-
当AS3遇见Swift(一)
当AS3遇见Swift 从Hello开始 As3 trace(“Hello Eko”) Swift println(“Hello Eko”) 挺象,有点隔壁王叔叔的意思. 常量和变量 As3 publ ...
-
当As3遇见Swift(三)
类 As3 Swift中似乎没有包,包路径的概念.因而显得简洁的多. package { public class ShuaiGe { } } Swift类 class ShuaiGe{ } 类的构造 ...
-
Swift(二,元组,可选类型,类型转化)
一,首先,元组是Swift中特有的,OC中没有元组相关类型,具体怎么用,看下面的例子吧 //1.使用元组来定义一组数据 let infoTuple = (,1.8) let nameTuple = i ...
-
URL Handle in Swift (二) — 响应链处理 URL
最后更新: Swift4时候的博客,以前在 CMD markdown 上编辑的,现在搬到这里 在上篇文章-URL Handle in Swift (一) -- URL 分解中,我们已经将URL进行了分 ...
-
Swift 二维码扫描 简单实现
3.30看视频 学到了二维码简单的实现 还有一些动画的实现 今天就先记录一下二维码扫描的简单实现 不太好记手写一遍 学习的基础在于模仿嘛 创建一个实现二维码扫描的步骤 1.首先是懒加载创建 会话 ...
-
Swift(二)基础部分
数据类型 Swift 包含了 C 和 Objective-C 上所有基础数据类型.它还增加了 Objective-C 中没有的高阶数据类型比如元组(Tuple) 1.基础类型 Int整形和UInt无符 ...
-
Swift入门篇-集合
一:数组 一:可变数组 定义:数组使用有序列表存储相同类型的多重数据. 格式: 第一种格式 var 变量: 类型[] = [变量值,变量值,...] 第二种格式 var 变量 =[变量值,变量值,.. ...
-
Swift入门篇-基本类型(3)
一:元组 格式 变量或常量关键字 元组变量 = ( 变量,变量, …) 说明: : 元组变量还是一个变量,只不过表现方式和其他变量不一样 :()括号里面可以放入N个变量组成 例子: import Fo ...
-
Swift入门篇-基本类型(2)
现在我也在学习Swift语言,常常去逛很多苹果社区和论坛,看到了圈子很多奇怪的现象,发现很多人都赶忙去翻译 Swift书籍 和 发布Swift的视频 .他们这种对新知识的探索精神我本人是很佩服的.但是 ...
随机推荐
-
升级到tomcat7.0碰到的问题
今天把tomcat从6.0.18升级到7.0.25,发现了两个问题 问题1 java.lang.ClassNotFoundException: org.apache.catalina.mbeans.S ...
-
集合对象(NSSet)
main.m #import <Foundation/Foundation.h> @interface NSSet(printInteger) -(void)printSet; @end ...
-
BZOJ1627: [Usaco2007 Dec]穿越泥地
1627: [Usaco2007 Dec]穿越泥地 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 478 Solved: 303[Submit][Sta ...
-
rollback的作用
#pragma mark - 以队列的形式添加 // 以队列的形式添加数据FMDB比较常用的添加方式 // FMDB不支持多个线程同时操作,所以一般以串行的方式实现相关操作 - (IBAction)i ...
-
使用X264编码yuv格式的视频帧使用ffmpeg解码h264视频帧
前面一篇博客介绍在centos上搭建点击打开链接ffmpeg及x264开发环境.以下就来问个样例: 1.利用x264库将YUV格式视频文件编码为h264格式视频文件 2.利用ffmpeh库将h264格 ...
-
创建基本的2D场景(part1)
通过一个简单的2D游戏案例来学习unity 2D游戏开发,本文分为以下3个部分. · 创建工作层 · 添加静态景物 · 制作2D动画 通过这个案例,我们可以学习到unity2D游戏制作的基本流程,Sp ...
-
.net Core连接MongoDB
前两天在学习MongoDB相关的知识,做了个小Demo,大概是省份里面有多少所学校 连接MongoDB首先要通过Nuget添加一个MongoDB的包,下载此包 安装完毕后开始写代码了,创建一个省份实体 ...
-
[hashcat]基于字典和暴力破解尝试找到rar3-hp的压缩包密码
1.使用rar2john找到md5 2.基于字典 hashcat -a 0 -m 12500 /root/Desktop/md5.txt /usr/share/wordlists/weakpass.t ...
-
学习笔记TF038:实现估值网络
Q-Learning,学习Action对应期望值(Expected Utility).1989年,Watkins提出.收敛性,1992年,Watkins和Dayan共同证明.学习期望价值,从当前一步到 ...
-
vue 跟路径加载缺少跟前缀
vue 加载资源失败:跟路径残缺,都是配置时 一个正斜杠 / 多余惹的祸