// 当需要导入框架的类库的时候, 使用 import 类库名 不用再加 <> 或者 ""
import Foundation
print("Hello, World!") // 在 Swift 中, 使用 print 输出
// 1. 定义常量(let)和变量(var)
let myGender = "男" // 常量不可更改
// 定义变量 可以更改
var carName = "BMW"
carName = "Audio"
// Swift 定义的变量或者常量的时候, 需要标识出变量或者常量的类型, 如果不去标识, 会根据初始值自动判断类型, 由后面的值来决定变量的类型
var age = 20
let name0 = "Jack" // 会自动推断为 Sting 类型, 由后面的值来决定 name 的类型
let name : String = "Jack" // 由前面的类型 String, 决定后面赋什么类型的值, 即后面值的类型要和 String 一致
var age1:Int? // 问好表示当前 age1是可选类型 其值可以为空 并不是赋予 0
// 注意: 如果使用 let 修饰, 必须赋初值; 如果是使用 var 修饰, 可以不付初值
print(age1)
// 定义字符类的变量
var char:Character = "A" // 此时的char 就是一个字符. 切记其值也是用"", *只能放一个字符*
// 定义 Bool 类型的变量(值只有 true , flase)
var flag:Bool = true;
/************************字符串****************************/
// (1).创建一个空串变量
var str_empty = ""
var str1_empty = String()
// (2).通过字符串对象的 isEmpty 方法判断是否为空
if str_empty.isEmpty { //(if 判断之后 必须是 Bool 类型)
print("str_empty is empty!!!")
};
// (3).拼接字符串
var str_url = "http:\\\\" // 转义字符 \\ 表示会转义一个'\'
var str = "www.lanou3g.com"
let urlString = str_url + str
print(urlString)
print("\(urlString)\n") // 插入式取值 \(变量名)\
// (4).获取字符串长度
var str1 = "abc"
// print(str1.characters.count)
// (5).字符串插值
let mul = 4
let content = "\(mul) * 2.5 = \(Float(mul)*2.5)" // swift 中不存在 C 语言中的整型+浮点型 = 浮点型的, 需要强转
print(content)
// (6).字符串比较
let str2 = "xiaoxiao"
let str3 = "lanou"
if str2 == str3{
print("两个字符串相等")
}else{
print("不相等")
}
/************************数组****************************/
// Swift 的数组里面存储的所有数据, 都必须是同一类型的
// 定义一个数组变量
var nameArray = ["张三", "李四", "王五"]
var nameArray1:Array <String> = ["张三", "李四", "王五"]
let arrat = Array<Int> () // 定义一个字符串类型空数组
var int_arr = [Int]() // 定义一个整型空数组
// 访问数组中某个元素
print("第二个元素:\(nameArray[1])")
// 向数组中添加一个元素
var int_arr1 = [Int]()
int_arr1.append(10)
int_arr1.append(20)
// 向数组中某个位置, 插入一个元素
int_arr1.insert(30, atIndex: 2)
// 移除数组中的某个位置上的元素
int_arr1.removeAtIndex(1)
// 移除所有元素
int_arr1.removeAll()
print(int_arr1)
/************************字典****************************/
var dictionary:Dictionary<String,Int> = ["a":10, "b":20]
// 定义一个空字典
var dictionary1:Dictionary<String,Int> = [:]
var dictionary2 = Dictionary<String,Int>()
// 向字典中添加一个键值对
dictionary["c"] = 30
print(dictionary)
// 修改字典中某个键值对的值
dictionary["a"] = 120101010;
print("更改后:\(dictionary)")
print(dictionary["a"])
// 删除字典中的一个键值对
dictionary.removeValueForKey("a");
/************************元组****************************/
// 元组中可以存放多种类型的值, 而且存放的个数可以多个
let status = ("13班",["IOS","Html5","Android"])
let statu:(classroom:String,course:Array) = ("13班",["IOS","Html5","Android"])
// 访问元组中某个元素
// ①通过下标
print("班级是:\(status.0)")
// ②通过标注名
print(statu.course)
/**********************循环结构和分支结构****************************/
// 第一种形式
for var i = 0; i < 10; i++
{
print("+++\(i)")
}
// 第二种形式
for number in 1..<10
{
print(number)
}
// 第三种形式
for number in 1...10
{
print(number)
}
// while , repeat...while
var i = 5
while i > 0
{
i--
print(i)
}
repeat
{
print("repeat...while") // 先执行循环体, 再判断条件
}while 1 < 0
// 使用 for 循环便利数组
var animalsArray = ["dog","cat","tiger","pig"]
for a in animalsArray
{
print(a)
}
// 使用 for 循环遍历字典
var animalsArray1 = ["dog":"狗","pig":"