Swift_1基础

// swift中导入类库使用import,不再使用<>和""
import Foundation

// 输出
print("Hello, World!")


// MARK: - 定义常量、变量
// 定义常量(使用完第一次就不能修改它了)
let myGender = "男"

// 定义变量
var carName = "BMW"
carName = "Audi"
print(carName)

// MARK: - 定义常量变量:变量类型的隐式转换
// 在swift中如果定义一个常量变量不给定相关的类型,它会隐式转换成你给定的初始值类型
let name = "Jack"   // 如果这样定义出来一个常量,它会隐式转换成String类型
let name1 : String = "Rose"   // 如果给定类型,后边赋值的时候需要根据类型进行赋值
let age : Int = 18  // 如果定义常量最好给出初始值,定义变量可以不给初始值

var age1 : Int?  // 表示age1的类型是可选类型,其值可以为空
print(age1)

// 定义一个字符类型的变量
var ch : Character = "A"   // 赋值字符类型的时候仅需一个字母即可

// 定义一个BOOL类型的变量(在swift中BOOL类型的变量只有true和false)
var flag : Bool = true


// MARK: - 字符串String
// 1.创建一个空的字符串
var str_empty = ""
var str1_empty = String()

// 2.判断一个字符串是否为空
if str_empty.isEmpty {
    print("str_empty为空字符串")
}

// 3.字符串的拼接
var str1 = "http://"
var str2 = "www.baidu.com"
let str_New = str1 + str2
print(str_New)
print("百度网址:\(str_New)")   // \(变量名)输出相关的内容【插入式取值】

// 4.获取字符串长度
var str3 : String = "abcdef"
print(str3.characters.count)
print("此字符串的长度:\(str3.characters.count)")

// 5.字符串的比较
var str4 = "wangcai"
var str5 = "xiaoqiang"

if str4 == str5 {
    print("两个字符串相等")
}

if str4 != str5 {
    print("两个字符串不相等")
}

// 截取字符串
var str6 = (str5 as NSString).substringWithRange(NSMakeRange(2, 4))


// MARK: - 数组
// swift中数组中的元素类型必须相同
// 定义一个数组
var nameArray = ["yuanyuan", "fangfang", "yaoyao"]
print(nameArray)

var nameArray1 : Array<String> = ["weizhuang", "genie", "tianming"]
print(nameArray1)

// 定义一个空数组(字符串)
let array = Array<String>()
print(array)

// 访问数组中的元素
print(nameArray1[1])

// 向数组中添加元素
var int_array = Array<Int>()
int_array.append(18)
int_array.append(20)
print(int_array)

// 使用运算符添加数组元素
int_array += [30]
int_array += [25]
print(int_array)

// 使用运算符添加多个元素
int_array += [40, 50, 60]
print(int_array)

// 插入元素到具体的位置
int_array.insert(99, atIndex: 1)
print(int_array)

// 移除某个元素
int_array.removeAtIndex(3)
print(int_array)

// 移除所有元素
int_array.removeAll()
print(int_array)

// 移除某个范围内的元素
int_array.removeRange(2...5)
print(int_array)

// MARK: - 字典
// 定义一个字典类型的变量
var dic : Dictionary<String, Int> = ["a" : 18, "b" : 20]
print(dic)

// 定义空字典
var dic1 : Dictionary<String, Int> = [:]
var dic2 = Dictionary<String, Int>()
print(dic1,dic2)

// 向字典中插入一个键值对
dic ["c"] = 23
print(dic)

// 修改字典中的内容(根据键去修改)
dic["a"] = 15
print(dic)

// 输出字典中的某个键对应的值
print(dic["c"])

// 删除字典中内容(根据键去删除)
dic.removeValueForKey("b")
print(dic)


// MARK: - 元组
// 定义一个元组
// 方法一:直接初始化一个元组(使用swift隐式转换的特点)
let tuples = ("研14", ["iOS", "html5", "Android"])
print(tuples)

// 方法二:显示初始化的方式
let tuplesNew : (String, Array) = ("研15", ["盖聂", "卫庄", "天明"])
print(tuplesNew)

// 取出元组中的值
// 第一种取值方式:直接把元组赋值给另一个常量,根据相关标记进行取值
let tuplesNew1 : (classroom : String, name : Array) = tuplesNew;
var classInfo1 = tuplesNew1.classroom + tuplesNew1.name[0] + tuplesNew1.name[1] + tuplesNew1.name[2];
print(classInfo1)

// 第二种取值方式:直接根据下标进行取值
var classInfo2 = tuplesNew.0 + tuplesNew.1[0] + tuplesNew.1[1] + tuplesNew.1[2]
print(classInfo2)


// MARK: - 循环
// 第一种形式:
for var i = 1; i < 10; i++ {
    print(i)
}

// 第二种形式
for number in 1..<10 {
    print(number)
}

// 第三种形式
for number in 1...10 {
    print(number)
}

// while循环和repeat...while
var i = 8
while i > 0 {
    i--
    print(i)
}

repeat { // 先执行一次循环体,再进行相关的循环
    print("我爱你们")
}while 1 < 0

// 使用循环遍历数组
var animalArray = ["dog", "pig", "cat", "tiger"]
for animal in animalArray {
    print(animal)
}

// 使用循环遍历字典
var animalDict = ["dog" : "🐶", "pig" : "🐷", "monkey" : "🐵"]
for (key, value) in animalDict {
    print("key = \(key), value = \(value)")
}


// MARK: - 分支结构(if结构和switch格式)
// if形式
let flag1 = true
if flag1 == true {
    print("我是真的")
} else {
    print("我是假的")
}

// switch形式使用fallthrough实现贯穿每种可能
let value = 0
switch value {
case 0:
    print("0")
    fallthrough
case 10:
    print("10")
    fallthrough
default:
    print("other")
}

// case后面可以使用一个范围
switch value {
case 0..<10:
    print("输出0-10之间的数值")
case 10...100:
    print("输出10-100的数值")
default:
    print("other")
}

// case后可以使用(let和var修饰的常量或变量)[where 是满足某种条件]
switch value {
case var i where value >= 0 && value < 6:
    i = 99
    print(i)
default:
    print("other")
}

// case后可以匹配一个元组
let point = (10, 10)
switch point {
case (10, 0):
    print("11111")
case (10, 8):
    print("22222")
case (_, 10):    // _代表可以忽略某个元素
    print("33333")
case (10, 10):
    print("44444")
default:
    print("other")
}


// MARK: - 枚举(enum)
// 枚举原始类型为int类型的
enum Direction : Int {
    case east = 0
    case south = 1
    case west = 2
    case north = 3
}
print(Direction.east.rawValue)  // rawValue就是找到相对应枚举的原始值

// 枚举原始类型为String类型的
enum Season : String {
    case spring = "春天"
    case summer = "夏天"
    case autumn = "秋天"
    case winnter = "冬天"
}
print(Season.summer.rawValue, Season.autumn.rawValue)

// 根据原始值获取枚举的类型
print(Direction(rawValue: 2))


// MARK: - 函数
// 表示函数的关键字:func
// 函数的类型有四种
// 1.无参无返
func function1() -> Void {
    print("无参无返")
}
function1()

// 2.有参无返
func function2(name str:String) -> Void {
    print(str)
}
function2(name: "akai")

// 3.无参有返
func function3() -> String {
    return "卫庄"
}
print(function3())

// 4.有参有返
func function4(num1:Int, num2:Int) -> Int {
    return num1 + num2
}
print(function4(5, num2: 4))


// 函数的返回值为元组类型
func function5(num1 : Int, num2 : Int) -> (Int, Int, Int) {
    return (num1 + num2, num1 - num2, num1 * num2)
}
print(function5(9, num2: 5))

// 外部参数和内部参数
// first和second是外部参数,是在函数外部使用的,在函数调用的时候会显示出来这两个名称,默认的情况下,第一个外部参数在调用的时候不显示,其余的均显示,而且和你定义的名字一样
// one和two是内部参数,在函数内部使用的,
func function6 (first one : Int, second two : Int) {
    print((one, two))
}
function6(first: 10, second: 2)

// 如果都不想显示外部参数:"_"的作用是忽略
func function7(one:Int, _ two:Int) {
    print("忽略外部参数")
}
function7(3,5)

// 函数的嵌套
func test1() {
    func test2() {
        func test3() {
            print("哈哈哈哈")
        }
        test3()
    }
    test2()
    print("有点意思")
}
test1()

// inout修饰的参数
func test(inout name : String) {
    name = "卫庄"
    print(name)
}
var myName = "yuanyuan"
print("myName:\(myName)")
test(&myName)
print(myName)

func Test(var name : String) {
    name = "盖聂"
    print(name)
}
var myName1 = "yinhao"
print("myName1 = \(myName1)")
Test(myName1)
print(myName1)

posted on 2016-07-25 20:54  ivonne  阅读(76)  评论(0编辑  收藏  举报

导航