Swift(上) 常量, 变量, 数据类型, 循环, 选择结构 简单函数

来源:互联网 时间:1970-01-01

本篇内容是在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)

 


相关阅读:
Top