Swift 学习 基础<一>

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

import UIKit

var str = "Hello, playground"
print("A"); print("A") // 如果同一行有有段代码用 ';'隔开
// 默认自带换行符
println("Alice"); println("Peter"); println("Tommy")

//------------------------------基本数据类型-------------------------------------

// 类型推断
let a = 10
var b = 20
print(a+b)

// 关于整型,在32位系统自动推断Int32, 64位-->Int64
let maxNumberOfStudent = 50
var currentStudent: Int // 如果不给初值,必须要指定类型  在使用前必须给定初值(安全性的体现)
currentStudent = 50
currentStudent++
currentStudent


var score = 90.2 // 浮点型默认Double类型
var score2: Float = 90.2 // 精度低 在底层转换的时候,有偏差
var scoreSum = score + Double(score2) // 拒绝隐式转换,必须转成相同类型 转化规则 : Type (value)

//------------------------------字符串类型-------------------------------------
let name = "Alice"
let char: Character = "m" // 默认生成字符串类型, 如果需要字符型,手动指定

let School = "school"
let Class = "classA"
let ourClass = loSchool + loClass // 拼接字符串, +重载运算符(来源于c++)
let class_A = "A"

let 范冰冰 = "班长" // Swift 支持Unicode编码,所以可以支持中文
let  = "love"


//------------------------------数组类型-------------------------------------

// Swift 数组只能存储同一类型的数据 (实际上是可以存放不同类型的数据)
var array = [1,2,3]
let array2: [Int] = [1,2,3] // 指定类型 [value类型]
let array3: Array<Int> = [1,2,3]
let array4 = ["a","b","c"]

// 增加
array.insert(1, atIndex: 0)
array + array2
array.append(5)

// 删除
array.removeLast()

// 查询
array[0] = 10
print(array)

let arr = [11,22,33,44,55,66]
array += arr

// 区域运算符
// ...  1....2  从1到2的闭区间
// ..<  1..< 左闭右开
arr[1..<2]
arr[0...2]

//--------------------------字典 (通常称为键值对)-------------------------------
var dictionary = ["key": 333,"key1": 444]
var dictionary2: Dictionary<String, Int> = ["key": 000,"key2": 111] // 指定类型

// 查询
dictionary2["key"]
// 如果检测到字典中 没有这个键,且我们对起做了赋值操作, 系统就会做插入操作
dictionary["key3"] = 666
dictionary

var index = dictionary.indexForKey("key")
dictionary.removeAtIndex(index!)
// var any: String = nil  // 这样的赋值方式是不可行的 
// 所以swift提供了<可选类型>  optional  :?:

var stringO : String? = nil // 在类型后面加 '?' 证明是可选类型,此时可以为nil
// 底层实现 : 会给该变量进行打包 如果有值的时候 some 修饰  无值时用null修饰
// 上面 (index!) 的'!'号就是对他进行解包

stringO = "string"
stringO! += "ff" // !解包 使用的时候需要解包操作
stringO

stringO?.toInt() // .toInt 方法将stringO转化为int型
var num: Int? // 当我们有意识  返回值可能为空,就需要将接收者,定义为可选类型
num = stringO?.toInt()


//-------------------------- 元 祖 -------------------------------
// 用于储存不同类型的数据类型 使用圆括号
let status = (402,"Not Found")
status.0
status.1

let (c,d) = status
c
d

var status2: (num: Int, info: String) = status
var status3: (Int,String) = status // 限定类型
status2.num
status2.info

//-------------------------- 分 支 -------------------------------
// if语句中的条件必须是bool值或者是bool表达式

var isOrNo = true // swift 中的bool只能是true false
if isOrNo {
    
    println("true")
    
}

var count: Int? = nil
count = 20

if let num = count {
    
    println("num = \(num)") // \() 将变量和变量名隔开
    
}

//-------------------------- 循 环  -------------------------------

var num1 = 0
while num1 < 10 {
    
    println("num1 = \(num1)")
    num1++
}


var num2 = 10
var num3 = 20

do {
    num2 + num3
    num2++
    
} while num2 < 20
    

var num4 = 0
for num4 = 0 ; num4 < 10 ; num4++
{
    println("\(num4),num2")
}

var names = ["fangcheng","chenxuekai","yexinru"]
for nameStr in names {
    
   println(nameStr)
    
}

// 默认前面是位置 后面是数组内的value
// 枚举数组的位置和值,需要加关键字 --- enumerate
for (index,nameStr) in enumerate(names) {
    
    println(nameStr)
    println(index)
    
}

// 枚举字典 不用加关键字
var nameDic = [11: "AAA", 22: "BBB", 33: "CCC"]

for (key,value) in nameDic {
    println("\(key),\(value)")
}

// _占位符
for value in nameDic {
    println(value)
}

// 当我不想要下标 加个站位符
for (_, value) in nameDic {
    println(value)
}

for index_1 in names[0...1] {
    println(index_1)
}

//--------------------------  switch  -------------------------------
var point = (3, 0)
switch point {
    case (0, 0):
        println("原点")
    case (_, 0):
        println("x 轴"); fallthrough // 自带break 但我们不需要break的时候,就加这个 fallthrough
    case (0, _):
        println("y 轴")
    case (_, _):
        println("象限内")

}

let point2 = (3, 0)
switch point2 {
case (0, 0):
    println("原点")
case (let x, 0) where x == 4:
    println(x)
case (0, let y):
    println(y)      // 当下面有声明的变量时,不能fallthrough
case (let x, let y):
    println("\(x),\(y)")
    fallthrough
default:
    println("其他")
}

var number_switch = 20
switch number_switch {
case 1...10:
    println("1...10")
case 11...21:
    println("11...20")
default:
    println(">21")
}

for number_switch_enum in 1...100 {
    
    println(number_switch_enum)
    if number_switch_enum == 20 {
        break
    }
}

var vowel = "aaeifdsoufdsa"
//  如果想要在打印元音之后, 就跳出循环
//  在循环前面加一个标记, break + 标记 用于打断循环
tempName: for vowel_str in vowel {
    switch vowel_str {
        case "a", "e", "i", "o", "u":
        println("元音字母")
        break tempName
    default:
        println("辅音字母")
    }
    
}



//---------------------------------------- 冒 泡 ------------------------------------------
var array_sort = [3,4,1,7,5,0,9,3,8]

for var i = 0 ; i < array_sort.count ; i++
{
    for var j = 0 ; j < array_sort.count - i - 1; j++
    {
        if array_sort[j] < array_sort[j+1]
        {
            var temp = array_sort[j]
            array_sort[j] = array_sort[j+1]
            array_sort[j+1] = temp
        }
    }
    println(array_sort)
}



var array_sort1 = [1,3,6,7,0,10]

for var i = 0; i < array_sort1.count; i++ {
    
    for var j = 0; j < array_sort1.count - i - 1; j++ {
        
        if array_sort1[j] < array_sort1[j+1] {
            
            var temp = array_sort1[j]
            array_sort1[j] = array_sort1[j+1]
            array_sort1[j+1] = temp
        }
        
    }
    println(array_sort1)
}

array_sort1
原文地址:https://www.cnblogs.com/aaalice/p/4249231.html