_水丹青

iOS---初识Swift(一)

一、Swift简介

○ 2010年的夏天, 苹果公司的开发人员Chris Latten接到了一个特别的任务, 为OS X 和iOS平台开发下一代编程语言, 也就是Swift.

○ 苹果公司于2014年WWDC(苹果开发者大会) 发布的新开发语言Swift, 可与Objective-C共同运行于Mac OS和iOS平台, 用于搭建基于苹果平台的应用程序

○ 2015年的WWDC开发者大会上, 苹果公司推出了Swift2.0版本, 并且Swift完全开源

二、基本语法

  

//Swift中导入类库使用import, 不再使用<>或者""了
import Foundation

//Swift中的输出语句:print
print("Hello, World!")

//MARK: - 定义常量、变量

//定义常量 (使用完第一次就不能修改值)
let myGender = "女"
//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 char : Character = "A"  //赋值字符类型的时候 仅需一个字母即可
//定义一个bool类型的变量 [在swift中bool类型的变量只有true活着false]
var flag : Bool = false

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

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

//(3)字符串的拼接
var str_url = "http://"
var str = "www.baidu.com"

let str_new_url = str_url + str
print(str_new_url)
print("百度网址:\(str_new_url)\n")  // \(变量名)输出相关的内容[插入式取值]

//(4)获取字符串的长度
var str1: String = "dag"
print(str1.characters.count)

//(5)字符串的比较
var str2 = "MBBoy"
var str3 = "GBLW"

if str2 != str3 { // ==
    print("两个字符串不相等")
}

//MARK: - 数组
//Swift数组中的元素类型必须相同

//定义一个数组
var nameArray = ["yuanyuan", "GBLW", "WYW", ]
print(nameArray)

var nameArray1 : Array<String> =  ["YaQian", "XQ", "FatZhou"]

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

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

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

//使用运算符添加数组元素
int_array += [100]
int_array += [120]

print(int_array)

//使用运算符添加多个数组元素
int_array += [800, 900, 55]
print(int_array)

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

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

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

//MARK: - 字典

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

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

//往字典里赋值
dic["d"] = 50
print(dic)

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

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

//MARK: - 元组
//定义一个元组

//方法一:直接初始化一个元素 (使用swift隐式转换的特点)
let tuples = ("蓝鸥1班", ["iOS", "html5", "Android"])
print(tuples)

//方法二:显式初始化的方式
let tuplesNew : (String,Array) = ("蓝鸥8班", ["iOS", "html5", "Android"])
print(tuplesNew)

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


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


//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 = ["阿福", "pig", "cat", "tiger", "fish"]
for animal in animalArray {
    print(animal)
}

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

//MARK: - 分支结构 (if结构和switch格式)

//if形式的
let flag1 = true
if flag1 == true {
    print("11111")
}else {
    print("你们,....")
}

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

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

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

//特点4: case后还可以匹配一个元组
let point = (10,10)
switch point {
case (10,0):
    print("1111")
case (10,8):
    print("2222")
case (_,10):        // _ 代表可以忽略某个元素
    print("3333")
case (10,10):
    print("4444")
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 winter = "冬天"
}
print(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: "lanou")

//3:有返回值, 无参数
func function3() -> String {
    return "zhatian"
}

print(function3())

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

print(function4(5, num2: 6))


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

print(function5(9, num2: 2))

//外部参数和内部参数
//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(8, 9)

//函数的嵌套
func test1() {
    func test2() {
        func test3() {
            print("哈哈")
        }
        
        test3()
    }
    test2()
    print("........")
}

test1()
/*
//inout修饰的参数: 会改变所传参数的值
func test(inout name:String) {
    name = "MBBoy"
    print(name)
}

var myName = "yuanyuan"
test(&myName)
print(myName)
*/

//var修饰的参数: 不会修改所传参数的值
func admin(var name:String) {
    name = "MBBoy"
    print("name = \(name)")
}

var myName = "tianxin"
print("myName = \(myName)")

admin(myName)
print("myName = \(myName)")

 

posted on 2016-05-20 19:19  大一号  阅读(202)  评论(0编辑  收藏  举报

导航