zoukankan      html  css  js  c++  java
  • Swift(上) 常量, 变量, 数据类型, 循环, 选择结构 简单函数

    本篇内容是在XCode的Playground下编写的

    那么什么是Playground呢? 

    提到Playground我们就不得不提Swift这个最近苹果公司力推的语言, Swift是苹果公司在WWDC2014上发布的全新开发语言。从演示视频及随后在appstore上线的标准文档看来,语法内容混合了OC,JS,Python,语法简单,使用方便,并可与OC混合使用。

    Xcode 6 对 Swift 有着全面深入的支持。你可以利用 100% Swift 代码创建全新的 app,或者将新的 Swift 代码或框架添加到现有的 app 中,还可查看用 Swift 和/或 Objective-C 语言编写的文档。“跳转至定义”或“快速打开”等所有常见的可供性同样适用于 Swift,甚至还可用 Swift 语法显示 Objective-C 标头定义。

    尽管 Swift 编译为高度优化的原生代码,但 Playground 可以实现脚本语言的交互式体验。键入一行代码,结果便会立即显现。如果你的代码运行一个循环,可将该行代码添加到时间轴辅助编辑器中,观察其进度。以图形方式显示变量,绘制视图时检查每一个步骤,或者观看 SpriteKit 动画场景。在 Playground 中优化好代码后,即可将它移到你的项目中。Playground 文档包括你可以在 Playground 中打开的教程,其中包含可供试验的交互式工作表。

    但是, Playground现在感觉还是一个玩具, 玩玩可以, 但是真正的去用它编程 那就不怎么靠谱了

    // Playground - noun: a place where people can play

    import UIKit

    var str = "Hello, playground"

    // 输出语句

    // 我们学习每一门语言的第一条语句HelloWorld!

    println("hello, world")

    // 定义常量

    // 可以不写数据类型, 系统会根据其赋值自动推荐其类型

    //let a = 10

    let a : Int = 10

    println("\(a)")

    println(a)

    // 定义变量

    var b = 11.0

    //var b : Float = 11.0

    // Swift不支持隐式转换 必须显示转换类型

    var c = (Double)(a) + b

    // Swift命名几乎支持所有Unicode编码 

    // 注意以下几点:

    // 1. 不能使用系统保留字, 如果一定要使用保留字, 可加`保留字`命名

    // 2. 不能以数字开头

    // 3. 不能使用数字符号命名

    // 4. 不能使用横线箭头命名

    let `Int` = 1

    var 哈哈 = "呵呵"

    println(哈哈)

    var = ""

    println()

    var short : Int8 = 4

    var xx : Int16 = 66

    // 拼接字符串

    += 哈哈

    // 元组 数据库里的概念, 相当于一条数据

    var person : (String, Int) = ("我", 23)

    // 可以通过下标取值

    person.0

    person.1

    // person1相当于表名, name, age相当于列名, 对应着数据库中的一条数据

    var person1 : (name : String, age : Int) = (name : "我", age : 23)

    person1.name

    // 元组分解

    var (name, age) = person1

    name

    age

    // 数组

    // 可变用 var 修饰

    // 不可变用 let 修饰

    // 定义一个空数组

    var emptyArr = [String]()

    // 数组元素个数

    emptyArr.count

    // 必须是同一类型数据, 否则将自动转换为OC里的数组

    var arr = ["dt", "xg", "lw"]

    // 系统会自动推断为下面这种形式

    //var arr : [String] = ["dt", "xg", "lw"]

    // 数组里添加一条元素

    arr.append("xq")

    // 数组中插入一条元素

    arr.insert("lb", atIndex: 1)

    // 修改数组中下标对应的元素

    arr[0] = "hdt"

    println(arr)

    // 删除数组中某条数据

    arr.removeAtIndex(0)

    println(arr)

    // 遍历数组

    for name in arr {

        

        name

        

    }

    // 遍历数组时获取元素对应的下标

    for (index, name) in enumerate(arr){

        

        index

        name

        

    }

    // 数组中多个元素

    // 0..<2 表示一个范围, 0~2左闭又开区间

    // 0...2 表示0~2闭区间

    arr[0..<2]

    arr[0...2]

    // 创建一个空字典

    // key必须是同一个类型, value 也必须是同一类型的, key和value可以是不同类型的

    var emptyDic = Dictionary<String, Int>()

    var dic = ["name":"sx", "other":"zx"]

    // 系统会自动推断为下面这种形式

    //var dic : Dictionary<String, String> = ["name":"sx", "other":"zx"]

    // 在字典中添加键值对

    // 如果key值存在则为修改键值对操作

    dic["origin"] = "lsx"

    println(dic)

    dic.updateValue("wg", forKey: "other")

    println(dic)

    // 删除字典中的键值对

    dic.removeValueForKey("name")

    dic["other"] = nil

    println(dic)

    // 遍历字典

    for (key, value) in dic{

        

        key

        value

        

    }

    // 通过下标取字典中的键值对

    var index = dic.indexForKey("origin")

    dic[index!]

    // 可选变量 optional

    // 表示此变量的值可能为空

    var canChoose : Int?

    // 应用于不确定能不能有值的情景, 例如下面情况 如果"1234"为有值, "1234f"则为nil 如果不是可选变量默认都有值

    var newStr : String = "1234f"

    // toInt表示转化成Int类型

    canChoose = newStr.toInt()

    // if语句 要求判断条件必须为Bool值 用true 或 false

    // 如何定义一个Bool值

    var isTrue : Bool = true

    if isTrue {

        

        println("true, \(newStr)")

        

    } else {

        

        println("false")

        

    }

    if canChoose != nil {

        

        println("true")

        

    } else {

        

        println("false")

        

    }

    // switch

    // Swift中对switch进行了很大的修改, 我们case选项可以为字符串, 默认不需要写break, 如果想强制执行下一个case, 需要添加 fallthrough关键字

    var someone = "xm"

    switch someone {

        

    case "xm" :

        println("xm")

        fallthrough

    case "xxs" :

        println("xxs")

    default :

        println("default")

        

    }

    // switch 的case 可以为一个范围, 甚至可以多条件选择 用 where 关键字

    var score : Int = 45

    switch score {

        

    case 0..<100 where score == 88:

        println("这是一个小于100的数")

    case 100...200 :

        println("这是一个100到200之间的数")

    default :

        println("default")

        

    }

    // switch的case 还可以为一个元组, 元组中的"_"表示忽略该值

    var point = (0, 4)

    switch point {

        

    case (_, 0):

        println("在x轴上")

    case (0, _):

        println("在y轴上")

    default:

        println("default")

        

    }

    // 可以通过取范围遍历

    var i : Int

    for i in 0..<10 {

        

        i

        

    }

    // for 循环

    for var j = 0; j < 10; j++ {

        

        j

        

    }

    // do while

    var k = 10

    do {

        k++

    } while k < 20

    // while循环

    while k < 100 {

        

        k++

        

    }

    // 定义函数时 需要加一个 func关键字 sayHello 为函数名 括号里的为参数(参数名: 参数类型) -> 指的是返回值  {}大括号里面的表示函数体

    func sayHello(name:String, number:Int)->String {

        

        return name

        

    }

    sayHello("dt", 99)

    // 我们可以给函数参数加一个标签 (外部参数) 用于提示我们需要输入一个什么样的参数 或者说是干什么用的

    func sayGoodBye(peronName name:String, number:Int)->String {

        

        return name+"\(number)"

        

    }

    sayGoodBye(peronName: "xg", 99)

  • 相关阅读:
    mysql注入小测试
    让函数返回指定值实用写法
    源码下载网址
    带宽
    九度oj 题目1080:进制转换
    九度oj 题目1079:手机键盘
    poj 3046 Ant Counting
    整数拆分问题
    poj 2229 Sumsets
    九度oj 题目1411:转圈
  • 原文地址:https://www.cnblogs.com/sunSQuan/p/4270587.html
Copyright © 2011-2022 走看看