初探Swift基本功能

//
// main.swift
// SwiftLesson_1
//
// Created by wanghongfei2016 on 16/2/29.
// Copyright © 2016年 wanghongfei. All rights reserved.
//

import Foundation
//输出语句
print("Hello, World!")

//使用let定义一个常量,不能重新赋值

//Swift支持隐式类型推断 可以根据初值 自盾构的判断Swift的数据类型
//let a = 10
//print(a)
//
//let b : String = "nihao"
//
//let c = 20.1
//
////Swift 不支持隐式类型转换 不能让两个不一样的数据类型进行四则运算
////Swift 强转的格式:数据类型(需要转换的数据)
//
//let d = Double(a) + c
//
//let 迟到的 = "做俯卧撑"
//
//let = "哭"
//
//let 哭 = ""
//
//
//let str1 = "abcd"
//
//let str2 = "efg"
//
////Swift里面支持运算符的重载 会根据语境自动判断运算符的含义
//let str3 = str1 + str2
//
//print(str3)

//var a = 10

//a = 100

//如果需要定义一个初值为nil的变量的话 格式: var + 变量名 + ":" + 变量类型? = nil

//拆包

//var b : String? = nil

//let c : String? = nil //可以使用这样的语法但是因为不能改变值 所以没有意义

//本质区别 let定义的常量的内存地址不可改变 var定义的变量可以

/**********************数组************************/

//Swift 数组里面的数据类型必须是一样的

//let array = [2, 3, 4, "a"] // AnyObject Swift1.0版本 NSObject Swift2.0版本

//print(array)

//数组初始化的第二种方式 先制定数据类型

//let array1 : [Int] = [1, 3, 5]

//定义一个空数组
//let array2 : [Int] = []//不能添加值 没有意义

//var array3 = [1, 2, 4, 6]

//数组的增删改查
//print(array3[1])

//增
//array3.insert(10, atIndex: 2)
//
//print(array3)
//
//var array4 = [8, 9, 10]
//
//array3.insertContentsOf(array4, at: 3)
//
//print(array3)

//数组的删
//删除数组的同事,保存内存空间
//Swift里面的Bool是一个枚举,只有true和false两种参数
//array3.removeAll(keepCapacity: true)//

//let range : Range = Range(start: 2, end: 4)
//
//array3.removeRange(range)
//
//print(array3)

//改直接通过下标就可以了
//array3[2] = 100

//print(array3)

//拼接
//var array2 = [11, 12, 13]

//var array5 = array3 + array2

//print(array5)

/**************************字典***************************/

//let dictionary = [1 : 2, 3 : 4, "a" : "b"]
//
//
////Swift的字典里面 所有的key 所有的value都必须是同一种类型的
//let dictionary1 : [Int : String] = [1 : "a",2 : "b"]

//var dictionary = [1 : 2, 3 : 4, 5 : 6]
//print(dictionary)
//如果对一个不存在的key做赋值操作的话代表做增加的操作

//dictionary[1] = 100
//print(dictionary)

//如果对一个存在的key做赋值操作的话代表做修改的操作

//dictionary[7] = 200
//print(dictionary)

//删除
//dictionary.removeValueForKey(1)
//print(dictionary)

//查 根据key
//print(dictionary[5])

/***********************元组**************************/

//使用() 标示定义一个元组,元组里面没有数据类型的概念
//let type = ("罗峰", "DMH")
//
//print(type.0,type.1)
//
//
//let type2 : (name : String, nickName : String) = type
//
//
//print(type2.name)

/**************************循环结构***************************/
//
//let array = [1, 2, 3, 4, 5]
//
//for var c in array{
//print(c)
//
//}

//下面的循环 没有小括号也是可以的
//for(var i = 0; i < array.count; i++){
// print(array[i])
// print("i = (i)")
//
//}

//repeat while和while

//var b = 1
//repeat{
// b++
// print(b)
//}while b < 10
//
//
//var timer : String? = nil
//if timer != nil {
//print("timer存在")
//} else {
//print("timer不存在")
//}

//let value = 0

//switch value {
//case 0:
// print(value)
//
//case 1:
// print(value)
//default:
// print(value)
//
//}

//0...10 表示的是从0开始到10结束并且包含10
//0..<10 标示的是从0开始到10结束并且不包含10
//

//switch value {
//
//case 0...10:
// print(value)
//case 11...20:
// print(value)
//default:
// print("超了")
//
//}
//
//print(-2...10)

let point = (10, 10)

switch point {
case (10, 10):
print(point)
case (_, 10):
print(point)
case (10, _):
print(point)
default:
print(point)

}

let value = 0
let value1 = 100
switch value{
case 0 where value1 < 10:
print(value)

case 0 where value1 > 10:
print("正确")
default:
print("错误")

}

//无参无返回值
//无参有单个返回值
//无参有多个返回值
//有参无返回值
//有参有单个返回值
//有参有多个返回值
//inout函数
//嵌套函数

//无参 无返回值
//func(关键字)test(函数名)"()"(参数列表) ->Void(返回值类型)
//func test() -> Void {
//print("我是第一个函数")
//
//}
//test()

//无参 有返回值
//func test1() ->String {
//
//return "我是第二个函数,无参有返回值"
//
//}
//
//let str = test1()
//
//print(str)
//
//func test2() -> Array {
//
//return [1, 2, 3]
//
//}

//返回一个OC数组
//func test3() -> NSArray {
//
//return [1, 2, "a", "b"]
//
//}

//有参数无返回值
//参数格式参数名 + ":" + 参数列表
//func test4(name : String, sex : String) -> Void {
//
//print("我叫(name),我的性别是(sex)")
//
//}
//
//test4("罗峰", sex: "未知")

//参数是一个数组格式 : 参数名 + ":" + Array<数据类型>
//func test5(array : Array) -> Void{
//
//print(array)
//}
//
//test5([2, 4, 6])

//有参数有返回值

func test6(i : Int) ->Int {
return i + 10

}

print(test6(5))

//func test7(dictionary : Dictionary<>)

//无参数 有多个返回值
//func test8() -> (String, String){
//return ("罗峰","15")
//
//}
//
//
//let type = test8()
//
//print(type.0)

func test9(name : String, gender : String) ->(String,String){

return(name, gender)

}

let type = test9("lufei", gender: "weihzi")
print(type)

//inout函数
//Swift函数里面的参数 默认使用let 修饰 是不可以更改的
//inout函数作用的参数可以修改 改后在外面可以使用
//func test10(inout number : Int){
//number = 100
//}
//var a = 5
//test10(&a)
//print(a)
//
//func test11(inout name : String, inout name2 : String){
//let temp = name
// name = name2
// name2 = temp
//
//}
//
//var name = "zhangsan"
//var name1 = "lisi"
//test11(&name, name2: &name1)
//print(name,name1)

//函数嵌套
//第一层
func test12(){
//第二层
func test13(){
//第三层
func test14(){
//第四层
func test15(){
//第五层
func test16(){
//第六层
func test17(){

                }
            }
        }
    }
}

}

你可能感兴趣的:(初探Swift基本功能)