静态或动态调度Swift语言?

时间:2014-06-03 06:11:18

标签: swift

阅读Swift语言指南我无法找到显式信息,无论是静态调度Swift(如基本C ++,Java,C#)还是动态调度(如Objective-C)。

语言功能(如类,扩展,泛型等)的文档似乎表明它是静态类型的,这可能是所谓的速度改进的来源。然而,Apple在WWDC 2014主题演讲中表示该语言使用与Objective-C相同的运行时,并且与Cocoa / Cocoa Touch非常兼容,后者建议动态调度。

2 个答案:

答案 0 :(得分:11)

描述静态分派的C ++,Java和C#并不是特别准确。所有这三种语言都可以并且经常使用动态调度。

同样,斯威夫特可以做到这两点。它与ObjC的不同之处在于它不会始终动态调度。标记@final的方法可以静态调度,struct和enum方法也可以。我相信如果运行时类型可以在编译时证明(类似于C ++的虚拟化),则可以静态调度非final方法,但我不确定那里的细节。

答案 1 :(得分:2)

根据Y Combinator(https://news.ycombinator.com/item?id=7835099)的摘录:

  

从用户的角度来看,它基本上都是Rust书,所有的肉汁都放松了所有权和语法。

     

它拥有全部[1]:静态类型,类型推断,显式可变性,闭包,模式匹配,可选项(使用自己的语法!   也“任何”),泛型,接口,弱所有权,元组,以及其他   简短的语法,最终和显式覆盖... ...

     

它尖叫“现代!”,具有所有最新的circlejerk功能。它甚至配有一个轻型桌/ bret-victor式游乐场。但是   仍然是一种看起来平易近人的实用语言   简单。

编辑:[1]:好吧,差不多。我认为我没有发现任何关于生成器,一流的并发性和并行性,或尾部调用优化等等。

相关问题