当As3遇见Swift(二)

字符串: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(二),布布扣,bubuko.com

时间: 2024-10-11 13:22:10

当As3遇见Swift(二)的相关文章

当AS3遇见Swift(一)

当AS3遇见Swift 从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 pr

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

一,首先,元组是Swift中特有的,OC中没有元组相关类型,具体怎么用,看下面的例子吧 //1.使用元组来定义一组数据 let infoTuple = ("cjh",18,1.8) let nameTuple = infoTuple.0 print(nameTuple) let count = nameTuple.characters.count //2.1 普通元组的定义方式 let errorMsg = ("error",123) errorMsg.0 //2.

Swift 二维码扫描 简单实现

3.30看视频  学到了二维码简单的实现 还有一些动画的实现  今天就先记录一下二维码扫描的简单实现  不太好记手写一遍 学习的基础在于模仿嘛 创建一个实现二维码扫描的步骤 1.首先是懒加载创建 会话 输入设备  输出设备 // 先倒入框架 AVFoundation import AVFoundation //通过懒加载 创建输入设备 private lazy var deviceInput: AVCaptureDeviceInput? = { //获取设备摄像头 let device = AV

swift (二)

直接上代码: // 运算符 // 一元运算符 // 1.负号运算符 var number1 = 10.0 var number2 = -number1 println((number2)) // 2.正号运算符 // 正号运算不做任何操作 var number3 = +number2 println((number3)) // eg:b = a++ 相当于 a 先赋值再完成自增,而 b = ++a 相当于 a 先完成自增,再去赋值 var number4 = number1++ number4+

Swift(二)基础部分

数据类型 Swift 包含了 C 和 Objective-C 上所有基础数据类型.它还增加了 Objective-C 中没有的高阶数据类型比如元组(Tuple) 1.基础类型 Int整形和UInt无符号整形 Float和Double浮点型 Bool布尔型 Character字符型 String字符串类型 2.集合类型 Array数组 Set集合 Dictionary字典 3.高阶类型 Tuple元组 声明常量和变量 常量和变量必须在使用前进行声明,Swift中使用 let 声明常量,使用 var

Swift 新语言开发

全书目录: 一.Welcome to Swift 二.Language Guide 三.Language Reference /* 译者的废话: 几个小时前熬夜看了WWDC,各种激动,今年很有料啊!当看到Swift出来的时候,瞬间傻眼,又要学习新语言了.这篇文章来自苹果官方的<The Swift Programming Language>一书,500页左右,在苹果官网有下载.Swift大家都没实际用过,本翻译一定是有各种错漏的,各位多多包涵,我会不断更新修正的. --(博客园.新浪微博)葛布林

[iOS翻译]《The Swift Programming Language》系列:Welcome to Swift-01

本文转载至:http://www.cnblogs.com/yangfaxian/p/3765081.html 全书目录: 一.Welcome to Swift 二.Language Guide 三.Language Reference /* 译者的废话: 几个小时前熬夜看了WWDC,各种激动,今年很有料啊!当看到Swift出来的时候,瞬间傻眼,又要学习新语言了.这篇文章来自苹果官方的<The Swift Programming Language>一书,500页左右,在苹果官网有下载.Swift

iOS8开发~Swift(一)入门

一.概论及Swift介绍 iOS7刚公布多时候,苹果引入了JavaScriptCore.framework用来处理JavaScript,看到了能够接触其它编程语言的契机,使iOS程序猿不用吊死在OC这一颗树上.当但iOS8公布的时候.简直Hold不住了.新的开发语言<Swift>出现了!Swift是一种新的编程语言,基于C和OC.可用于Cocoa和Cocoa Touch编程.编写代码中充满互动性和乐趣,且语法简洁而传神,能够使应用程序执行飞快.Swift是以后iOS和OS X的项目开发语言的选

Swift入门篇-集合

一:数组 一:可变数组 定义:数组使用有序列表存储相同类型的多重数据. 格式: 第一种格式 var 变量: 类型[] = [变量值,变量值,...] 第二种格式 var 变量 =[变量值,变量值,...] 说明: 1:[变量值,变量值...] 这样表示数组 ,前提是 变量值的类型必须一值.(和其他语言有所不同) 2:上面两种格式都是定义一个数组,数组中的变量值的类型必须一致 3:第一种格式定义的数组,是直接定义数组,第二种格式定义的数组 是编译器通过类型值推导出是数组格式 注意点 1:常量关键字