iOS 开发学习笔记

Stay hungry. Stay foolish.

Swift for AS3 developers 系列

Swift 类型推断

原文:Swift type inference
翻译:dreamana.com

Flash 开发者们经常认为能够声明变量的类型是最喜欢的 ActionScript 特性之一,这使得切换到其他动态语言(比如 JavaSctipt)变得步履艰难。使用了类型,编译器可以很容易地捕获错误,可以优化字节码使得我们的游戏和 Apps 运行得更快;编辑器带代码提示功能的,可以在我们每次敲键盘的时候提供大量关于代码库的信息,而重构时能让我们跳过繁琐又易错的跨多个文件编辑。就像 ActionScript, Apple 的新语言采用几乎一样的语法提供一样的便利:

// ActionScript
var toggle:Boolean = false;
var integer:int = 2;
var ratio:Number = 0.5;
var text:String = "Hello, ActionScript!";
var custom:MyClass = new MyClass();

// Swift
var toggle:Bool = false
var integer:Int = 2
var ratio:Double = 0.5
var text:String = "Hello, Swift!"
var custom:MyClass = MyClass()

不过,Swift 更进了一步。如果我们可以不用每次都声明变量类型,就可以获得严格编译器、额外优化和所有强大编辑器所带来的好处会怎样呢?我正是在说类型推断 (type inference) 特性,Swift 有!其实我们可以简化以上的代码,因为编译器懂得自动检测每一个变量的类型,不需要额外的注释:

// Swift
var toggle = false
var integer = 2
var ratio = 0.5
var text = "Hello, Swift!"
var custom = MyClass()

编译器很聪明,它能明白你声明了一个 Bool 型,一个 Int 型,一个 Double 型,一个 String 型和一个 MyClass 实例,因为那就是等号的另一边的东西。如果你阅读代码,这很明显,Swift 编译器也这么认为。然而,如果代码变得有点复杂时,可能你不能一眼就看出变量的类型是什么。那么就去声明类型吧,提高可读性,用上面第一个例子的语法。也两者中是最好的。

正如你看到的这些例子,Swift 不使用 new 关键字去实例化一个新对象,一行末尾的分号实际不是必需的。加上类型推断,有三个方式使你花更少时间去打字,更快地完成产品。每天都节省了时间,与此同时,你不会失去来自编译器和编辑器的强大的语言智能特性。

July 16, 2014

Don't wait for Adobe, believe your force!

http://www.adobe.com/devnet/flashplatform/whitepapers/roadmap.html

#include <iostream>

using namespace std;

int main()
{
    cout << "Hello world!" << endl;
    return 0;
}

Tags