• Swift初步介绍


    Swift是本届WWDC大会苹果推出的一门新开发语言,开发者网站上已经放出了这门新语言的介绍、教程和手册,如果手里有一台iOS设备的话,通过苹果的iBooks应用,从它的官方书店里搜索Swift,可以下载它的官方手册电子书版。

    为什么苹果要推出一门新的语言?现在苹果平台的主力开发语言,Objective-C已经无法再进化,无法再发展了,已经无法再赶上现代编程语言前进的步伐!了解Objective-C历史及原理的人都知道,Objective-C是门抄捷径的语言,它基本上没有发明新语法,仅仅是将Smalltalk的消息接口机制套在了C语法上,这虽然让它既拥有C语言的高效率和操纵系统一切的能力,也拥有了像Perl、Ruby等动态语言的动态特性,但是它的发展已经受限于古老的C语法,及C/C++令人恶心到吐的内存出错,想要在开发效率和丰富的表达能力上追赶C#、Go等语言已经是不可能完成的任务,因此干脆推出一门从头重新设计的语言,已经不是折腾不折腾的问题,而是必须的事情了。

    虽然说Swift是门新语言,但是并非什么重新发明的语言,而是各种先进语言的大杂烩!例如很多网友第一眼看到它用func关键字定义函数就说这不是Go语言吗?当然了它不是Go的简单克隆品,像前面所说,是掺入了各种目前流行语言的特色(我个人认为Scala影响的最多)。下面我举几个简单的例子,列举我认为的语言出处,希望能大概的看到它的设计哲学和语言特色。事先声明一下,个人知识所限,有些出处可能说的不准确,还请见谅指正,感谢。

    1.声明变量

    Swift是门强类型语言,引入了其它强类型语言的类型推导机制。
    声明一个变量

    var i = 100

    声明一个常量

    let i = 100

    变量与常量使用不同的关键字,这个应该是模仿Scala的var和val,let关键字则应该是来自Mozilla的rust语言,不过含义正好相反。

    2.类型声明后置

    var name:String = "Swift"

    3.所有的函数现在都是闭包了

    func getGasPrices() -> (Double, Double, Double) {
      return (3.59, 3.69, 3.79)
    }

    4.类定义终于使用class了

    5.定义属性使用set/get

    复制代码
    var sideLength : double 
    var perimeter: Double {
      get {
        return 3.0 * sideLength
      }
      set {
        sideLength = newValue / 3.0
      }
    }
    复制代码

    C#最早发明的语法。

    6.重载父类方法需要加override关键字

    override func simpleDescription() -> String {
      return "A square with sides of length (sideLength)."
    }

    来自Java的@Override注解。

    7.enum是一种类定义

    可以在enum里加入方法,我记得这是Java的,C++11也引入了相似的概念和写法。

    8.引入了(或者说保留?)struct,它和class不同的地方在于,变量赋值时,struct变量是内容复制,class是引用复制,这个毫无疑问,C#的东西。

    9.范式,可以创建方法模板

    复制代码
    func repeat<ItemType>(item: ItemType, times: Int) -> ItemType[] {
      var result = ItemType[]()
      for i in 0..times {
        result += item
      }
      return result
    }
    repeat("knock", 4)
    复制代码
  • 相关阅读:
    RESTful Web服务的操作
    Nginx学习之如何搭建文件防盗链服务
    PostgreSQL10.5安装详细步骤(Win10)
    前端安全系列(一):如何防止XSS攻击?
    【原码笔记】-- protobuf.js 与 Long.js
    【微信开发】-- 发送模板消息
    能编程与会编程
    vue2入坑随记(二) -- 自定义动态组件
    微信上传图片
    vue2入坑随记(一)-- 初始全家桶
  • 原文地址:https://www.cnblogs.com/Gbeniot/p/3769884.html
Copyright © 2020-2023  润新知