zoukankan      html  css  js  c++  java
  • Swift编程语言初探

        继WWDC2014后,新的编程语言Swift浮出水面。它具有高速、现代、安全、可交互等特征,而且其语法简单,入门门槛低,有望替代语法复杂难懂的Objective-C语言。据其作者Chris Lattner在博客上声称,该语言开发仅仅用了4年时间。而且底层框架基本上都是由其一人开发完毕。

        依照惯例,先用Swift来编写一个简单的"Hello World"

    println("Hello World")

        没错,就这么简单,没有IMPORT语句,没有main函数,也没有@符号,分号也不是必须的。编译执行能够看到控制台打印的Hello World字样。

        这里的println是全局函数,负责打印參数内容,并换行。

        Swift能够说是融合其它优秀编程语言的结果,因此很多语法都和其它语言存在共同之处。

    以下将简介一下该语言的一部分内容:

        1. Swift用var声明变量,用let声明常量。如

    var legs = 4               // 变量legs
    let PI = 3.1415926    // 常量PI
        那么legs和PI究竟是什么类型呢?答案是Type Inference(类型猜測)。由于这两个语句在声明的同一时候而且初始化,由于4是Int类型。因此猜測变量legs为Int类型。同理。3.1415926为Double类型,因此猜測PI为Double类型。

    也能够强制规定类型:

    var legs:Int
    let PI:Double
        若legs变量是整数类型,仅仅需在变量名后加入冒号,紧接着尾随一个类型名就可以。

        2. 赋值运算符没有返回值。而在其它一些语言中。赋值运算符返回的是变量的值。(如 a = 5 表达式返回5),而作为新手在做条件推断时,经经常使用赋值运算符来取代"=="。导致一些非常难发现的逻辑错误,而在Swift中不会出现这样的情况,由于这是一个语法错误。在编译期间会给出错误信息,如 if a = 5 { ... } ,if接受的是一个Bool值,而a = 5没有返回值,因此会出错。

    /* In C++ */
    int a = 1;
    if(a = 5) { ... }  // Compile Success
    /* In Swift */
    var a = 1
    if a = 5 { ... }   // Compile error
    // if a == 5 {...} This is correct one

        3. switch语句的case后不用加break。

    这也是其它语言新手常常犯的一个错误,而在Swift中,switch选择的case语句运行完成后马上跳出switch语句,而不会由于语句后没有break继续运行后面的case或者default语句。

    var a = 1
    switch a {
     case 1: println(1)
     case 2: println(2)
     default: println(3)
    }
    // no break at all

        4.  能够用n..m 或者 n...m 取代一个数组,比方:

    for index in 0 ..< 3 { println(index) }
    // 0
    // 1
    // 2
     ..代表前闭后开。...代表前后都闭合,所以0..3代表数组[0,1,2],而0...3代表[0,1,2,3]

      5. 怎样在字符串中插入变量或常量呢?Swift提供一个特殊的语法:

    var number = 5
    println("I got (number) books")
    
    // I got 5 books
        是不是非常easy。仅仅需在字符串中用(和)包裹你要插入的变量或常量就可以。

        6. 在Swift中,存在两种类型,一种是引用类型(reference type),一种是值类型(value type),class是引用类型。而enumeration和struct是值类型,它们的一个重要差别是传递的方式不一样,一个是传递副本,一个是传递本身。

        在Swift中,class的样子是:

    class Vehicle {
        var wheels:Int?
        var maxPassengers:Int?
    
        func description() -> String {
            return "This vehicle has (wheels!) wheels,max passengers is (maxPassengers!) " }
    
        init(withWheels wheels:Int,andMaxPassengers maxPassengers:Int) {
            self.wheels = wheels
            self.maxPassengers = maxPassengers }
        deinit { }
    }
        该类名为Vehicle,声明了两个属性,wheels和maxPassengers。以及一个实例方法description,该方法没有參数,返回值为字符串类型。同一时候。该类提供一个初始化方法。init是keyword,该方法接受两个參数,代表之前声明的两个属性。该參数包含三个部分,各自是外部參数名(external parameter name)。局部參数名(local parameter name)以及參数类型,在方法调用里会用到外部參数名,局部參数名是用在方法体内的。引进这样的方法的优点是继承Objective-C的优良特性,使代码段更像一个句子,更富有描写叙述性。以下来看看怎样使用这个类:

    var porsche = Vehicle(withWheels:4,andMaxPassengers:5)
    println(porsche.description())
    // This vehicle has 4 wheels,max passengers is 5
        另外在类的属性中,?代表optional。即该属性要么有值。要么没有值(nil)。


        Swift的语法文档见:http://download.csdn.net/detail/czjuttsw/7450821





        

  • 相关阅读:
    Docker部署LAMP搭建wordpress博客系统
    Docker教程---基本操作
    华为VS网络虚拟化技术
    云数据中心基础设施层概述
    EVE-NG模拟器关联SecureCRT、Wireshark软件
    Centos7.4安装openstack(queens)cinder卷类型和云主机安全
    围观大神的文件读取操作
    浅谈python垃圾回收机制
    Python网络爬虫开发实战使用XPath,xpath的多种用法
    快来学习怎么可视化监控你的Python爬虫
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/6951647.html
Copyright © 2011-2022 走看看