字符串: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(二)的更多相关文章

  1. 当AS3遇见Swift(一)

    当AS3遇见Swift 从Hello开始 As3 trace(“Hello Eko”) Swift println(“Hello Eko”) 挺象,有点隔壁王叔叔的意思. 常量和变量 As3 publ ...

  2. 当As3遇见Swift(三)

    类 As3 Swift中似乎没有包,包路径的概念.因而显得简洁的多. package { public class ShuaiGe { } } Swift类 class ShuaiGe{ } 类的构造 ...

  3. Swift(二,元组,可选类型,类型转化)

    一,首先,元组是Swift中特有的,OC中没有元组相关类型,具体怎么用,看下面的例子吧 //1.使用元组来定义一组数据 let infoTuple = (,1.8) let nameTuple = i ...

  4. URL Handle in Swift (二) — 响应链处理 URL

    最后更新: Swift4时候的博客,以前在 CMD markdown 上编辑的,现在搬到这里 在上篇文章-URL Handle in Swift (一) -- URL 分解中,我们已经将URL进行了分 ...

  5. Swift 二维码扫描 简单实现

    3.30看视频  学到了二维码简单的实现 还有一些动画的实现  今天就先记录一下二维码扫描的简单实现  不太好记手写一遍 学习的基础在于模仿嘛 创建一个实现二维码扫描的步骤 1.首先是懒加载创建 会话 ...

  6. Swift(二)基础部分

    数据类型 Swift 包含了 C 和 Objective-C 上所有基础数据类型.它还增加了 Objective-C 中没有的高阶数据类型比如元组(Tuple) 1.基础类型 Int整形和UInt无符 ...

  7. Swift入门篇-集合

    一:数组 一:可变数组 定义:数组使用有序列表存储相同类型的多重数据. 格式: 第一种格式 var 变量: 类型[] = [变量值,变量值,...] 第二种格式 var 变量 =[变量值,变量值,.. ...

  8. Swift入门篇-基本类型(3)

    一:元组 格式 变量或常量关键字 元组变量 = ( 变量,变量, …) 说明: : 元组变量还是一个变量,只不过表现方式和其他变量不一样 :()括号里面可以放入N个变量组成 例子: import Fo ...

  9. Swift入门篇-基本类型(2)

    现在我也在学习Swift语言,常常去逛很多苹果社区和论坛,看到了圈子很多奇怪的现象,发现很多人都赶忙去翻译 Swift书籍 和 发布Swift的视频 .他们这种对新知识的探索精神我本人是很佩服的.但是 ...

随机推荐

  1. BAT批处理(一)

    本文摘自博文<BAT批处理文件教程> 这是一篇技术教程,我会用很简单的文字表达清楚自己的意思,只要你识字就能看懂,就能学到知识.写这篇教程的目的,是让每一个看过这些文字的朋友记住一句话:如 ...

  2. Qt的IDE开发环境(KDevelop,MonKey Studio,QDevlop,Dev-cpp,Cobras,Edyuk)

    讲到Qt的IDE开发环境,本人一直在Windows下使用VC6.0 + Qt4.3.1开发程序.但转到Linux下,使用Fedora中自带的KDevelop + Qt4.3.1开发程序. 最近一直做Q ...

  3. 在VC6.0中编译头文件时产生moc文件

    1.在FileView视图中 右键点击需要产生moc文件的头文件(就是类中包含Q_OBJECT宏,如果没有这个宏就不需要产生moc文件) 2.在右键菜单中选择Setting... 3.选择Custom ...

  4. php--memcahce安装

    安装php_memcache.dll扩展 1.首先将php_memcache.dll文件放入E:\server\php\ext目录下 (php_memcache.dll下载地址:http://wind ...

  5. POI简易帮助文档系列--给Excel设置样式

    正如Html需要CSS一样,我们的POI生成的Excel同样需要样式才能更完美的表现我们的数据.下面还是从简单的例子出发,学习和了解POI的样式设计. 一.我的位置. package com.myja ...

  6. [LeetCode]题解(python):053-Maximum Subarray

    题目来源 https://leetcode.com/problems/maximum-subarray/ Find the contiguous subarray within an array (c ...

  7. JS之Array.slice()方法

    1.Array.slice(startIndex,endIndex); 返回由原始数组从startIndex到endIndex-1的元素构成的新数组; startIndex:默认值0,如果startI ...

  8. docker启动Mysql(转)

    cs202@cs202-devbox:~$ sudo docker run -d mysql7698fdd7a2d05d38cf19c60cc9e35c1117fc551ae5e31914494715 ...

  9. meizu mx4 usb调试

    meizu mx4 打开 USB 调试模式 连接手机 连接 usb 调试前,要确定调试模式已打开 在 设置 -> 辅助功能 -> 开发者选项 -> USB 调试 上打开 USB 调试 ...

  10. 简单的apk Ionic

    index.html <html> <head> <meta charset="utf-8"> <meta name="view ...