zoukankan      html  css  js  c++  java
  • Swift简单介绍 教程

     Swift是什么?

    Swift是苹果于WWDC 2014公布的编程语言。这里引用The Swift Programming Language的原话:

    Swift is a new programming language for iOS and OS X apps that builds on the best of C and Objective-C, without the constraints of C compatibility.
    Swift adopts safe programming patterns and adds modern features to make programming easier, more flexible and more fun.
    Swift’s clean slate, backed by the mature and much-loved Cocoa and Cocoa Touch frameworks, is an opportunity to imagine how software development works.
    Swift is the first industrial-quality systems programming language that is as expressive and enjoyable as a scripting language.
    简单的说:

    Swift用来写iOS和OS X程序。(预计也不会支持其他屌丝系统)
    Swift吸取了C和Objective-C的长处,且更加强大易用。


    Swift能够使用现有的Cocoa和Cocoa Touch框架。


    Swift兼具编译语言的高性能(Performance)和脚本语言的交互性(Interactive)。
    Swift语言概览

    基本概念

    注:这一节的代码源自The Swift Programming Language中的A Swift Tour。

    Hello, world

    类似于脚本语言。以下的代码即是一个完整的Swift程序。

    println("Hello, world") 变量与常量
    Swift使用var声明变量,let声明常量。

    var myVariable = 42
    myVariable = 50
    let myConstant = 42
    类型推导

    Swift支持类型推导(Type Inference),所以上面的代码不需指定类型。假设须要指定类型:

    let explicitDouble : Double = 70
    Swift不支持隐式类型转换(Implicitly casting),所以以下的代码须要显式类型转换(Explicitly casting):

    let label = "The width is "
    let width = 94
    let width = label + String(width)
    字符串格式化

    Swift使用(item)的形式进行字符串格式化:

    let apples = 3
    let oranges = 5
    let appleSummary = "I have (apples) apples."
    let appleSummary = "I have (apples + oranges) pieces of fruit."
     

    数组和字典

    Swift使用[]操作符声明数组(array)和字典(dictionary):

    var shoppingList = ["catfish", "water", "tulips", "blue paint"]
    shoppingList[1] = "bottle of water"
    var occupations = [
        "Malcolm": "Captain",
        "Kaylee": "Mechanic",
    ]
    occupations["Jayne"] = "Public Relations"
    一般使用初始化器(initializer)语法创建空数组和空字典:

            let emptyArray = String[]()
            let emptyDictionary = Dictionary<String, Float>()
    假设类型信息已知。则能够使用[]声明空数组。使用[:]声明空字典。

    控制流

    概览

    Swift的条件语句包括if和switch,循环语句包括for-in、for、while和do-while,循环/推断条件不须要括号,但循环/推断体(body)必需括号:

    let individualScores = [75, 43, 103, 87, 12]
    var teamScore = 0
    for score in individualScores {
        if score > 50 {
            teamScore += 3
        } else {
            teamScore += 1
        }
    }
    可空类型

    结合if和let。能够方便的处理可空变量(nullable variable)。对于空值,须要在类型声明后加入?

    显式标明该类型可空。



    var optionalString: String? = "Hello"
    optionalString == nil

    var optionalName: String?

     = "John Appleseed"
    var gretting = "Hello!"
    if let name = optionalName {
        gretting = "Hello, (name)"
    }
    灵活的switch

    Swift中的switch支持各种各样的比較操作:

    let vegetable = "red pepper"
    switch vegetable {
    case "celery":
        let vegetableComment = "Add some raisins and make ants on a log."
    case "cucumber", "watercress":
        let vegetableComment = "That would make a good tea sandwich."
    case let x where x.hasSuffix("pepper"):
        let vegetableComment = "Is it a spicy (x)?"
    default:
        let vegetableComment = "Everything tastes good in soup."
    }
    其他循环

    for-in除了遍历数组也能够用来遍历字典:

    let interestingNumbers = [
        "Prime": [2, 3, 5, 7, 11, 13],
        "Fibonacci": [1, 1, 2, 3, 5, 8],
        "Square": [1, 4, 9, 16, 25],
    ]
    var largest = 0
    for (kind, numbers) in interestingNumbers {
        for number in numbers {
            if number > largest {
                largest = number
            }
        }
    }
    largest
    while循环和do-while循环:

    var n = 2
    while n < 100 {
        n = n * 2
    }
    n
    var m = 2
    do {
        m = m * 2
    } while m < 100
    m
    Swift支持传统的for循环。此外也能够通过结合..(生成一个区间)和for-in实现相同的逻辑。

    var firstForLoop = 0
    for i in 0..3 {
        firstForLoop += i
    }
    firstForLoop
    var secondForLoop = 0
    for var i = 0; i < 3; ++i {
        secondForLoop += 1
    }
    注意:Swift除了..还有...:..生成前闭后开的区间,而...生成前闭后闭的区间。

     

  • 相关阅读:
    来实现一个缩水版Vuex
    vue中的适配:px2rem
    Vue.js的复用组件开发流程
    Vue调试神器之Vue.js devTools
    浅析Vue响应式原理(三)
    逐行粒度的vuex源码分析
    vue源码解读-目录结构
    Vue源码探究-虚拟DOM的渲染
    利用hash或history实现单页面路由
    passive的作用和原理
  • 原文地址:https://www.cnblogs.com/yfceshi/p/6882737.html
Copyright © 2011-2022 走看看