Swift

最近在看Swift。已经很久没有这么“悠闲”的看一本书了,从头开始认真的看一本书的感觉还不错。
Swift给我的感觉是一门挺“特别”的编程语言。Swift是一门动态语言却加入了很多静态语言的特性,从一定程度上说Swift比很多静态语言还更严谨。

  • 在Swift里所有数据都是有类型。Swift有着强大的“类型推导”,因此很多地方是不需要指定数据类型的。也正是因为所有数据都有类型,相比大多脚本语言,编译器能检查出更多的问题,IDE的自动化程度也很高。
  • Swift和Objective-C采用ARC进行垃圾回收。以极低的性能损耗换取了接近全自动垃圾回收的便捷性。(注:官方宣称Swift比Objective-C要快很多)
  • Swift有这众多的动态特性以及语法糖,使用便捷且功能强大。

Swift中的?以及!

之前在其他语言中没有见过类似语法,初次接触时非常困惑。但一旦理解了之后就会发现这其实非常简单。
String?表示String或nil。首先要理解 String? 同 String 并不是同一个类型。 ?是一个封包的操作符号,将String封装成 ? 类型。(注:有点类似泛型,按照泛型的写法是 ?<String>
!则是解包操作,将String?转换为String。如果被解包的数据是nil,则会解包失败抛出异常。

var s = "abc"  // s被自动推导为String类型
s = nil  // nil本身也是一个类型,类型不相等,将抛出错误。
var ss: String? = "abc"
let x = ss!  // ss 有值,可正常解包不报错。
ss = nil  // String?允许值为nil,不报错
let y = ss!  // 报错,无法对nil进行解包

Swift中的Dictionary以及NSDictionary

Swift中的Dictionary同NSDictionary可以通用(NSArray类似),但实际上它们并不是同一个东西。它们在混用的时候,编译器是需要对数据进行转换的。如果你代码中涉及大量的Dictionary/NSDictionary转换,很可能导致你的代码出现性能问题。(注:据说Swift中JSON处理速度慢就是该问题引起的)

Swift》有2个想法

  1. Tonny

    Swift打开了面向对象程序员的函数式编程大门。让我逐渐迷上haskell。
    转抄自我的知乎 :)
    swift 是多范式编程语言。可结构化编程struct enum,可面向对象class,可面向协议protocol,可函数式 high-order,pure function。
    集合了所有当前语言的精华,涉及到底层的优化(多用struct),抽象的架构思维(protocol-oriented,比java的接口强大很多),更健壮的代码(functional programming),程序员友好(代码简洁,var let 省句尾分号…),另外,甚至DSL,元编程。
    每个方向都带你通往另一个大门。性能优化方向,架构师方向,函数式方向,函数-范畴方向,纯函数-分布式方向(开源支持Linux),服务器端方向(不止web server)。。最重要的是,swift看上去很简单,写起来很轻松,但能写出多优美的代码得看个人水平了
    作者:Tonny
    链接:https://www.zhihu.com/question/24002984/answer/43844413
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  2. vicalloy 文章作者

    Haskell被说的很厉害,不过似乎应用场景很少,作为“实用派”一直没怎么去了解过。
    Swift还算是挺有意思的一个语言,如果生态环境跟上Swift的应用场景远不只是APP。

评论已关闭。