Swift基础学习01

 
相关辅助操作:
可以在右边直接查看输出值
 
可能出现的常见问题:
1.凡是=注意左右间距一样
2.程序有时会不断提示错误,解决方法:重启Xcode
 
 
/*-----------1.常量与变量--------------*/
//1.在swift里面 变量的修饰用var 常量的修饰用let
//2.print与println的区别是一个没换行一个换行了
//3.swift 数据类型写在变量名的后面 格式: var 变量名:类型
//4.等号两边要有空格都有空格 要没空格都没空格 (隐式类型推断)
//5数据类型的首字母大写
var a = 10
var a1:Int //指定类型
a1 = 2
println(a1)

println(a)
println(a)

let b = 8
println(b)

//其他语言采用的是ASCII编码方式,而swift采用的是uncode编码方式.以下命名方式不推荐明明依然采用字母/数字/下划线开头的命名规则
var 😄 = 20
println(😄)

//-------------数据类型----------------

var f:Float=10.6
var f1 = 10.6//默认为double类型

var w:Int
//强制转换类型的格式为: 类型(需要转换的变量名)
//所有的语言,在数据转换时从高精度转换到低精度都会存在数据的丢失
w = Int(f1)

//字符串string操作
var str = "妹子是"
var str1 = "徐小龙的"
//拼接
var ss  = str + str1
println(ss)
//字符串添加参数\()在swift中的表示占位符
println("漂亮的\(str)\(str1)")
//将整型转换成字符串
var sss = String(w)
println(sss)

//----------------数组----------------
//C语言中的数组必须存放相同类型的数据类型 OC中的数组必须存放对象
//swift中的数组只能存放同种数据类型(不同版本不一样)

var array = [1,2,3]
var array1:Array=[1, 2, 3, 4]
var array2:Array<Int>=[1,2,3,4]//<>中为数据类型
var array3:[Int]=[2,3,4]//这种方式是官方推荐的

var arr:[String]=["字符串1","字符串2"]

//放置不同类型的方法必须使用<Any>修饰
var array4:Array<Any>=[1,"w2e",3.3]

//添加元素
array4.append(4)
array4.append(12)
//插入元素
array4.insert("你好", atIndex: 1)
array4.insert(3.5, atIndex: 2)
//删除
array4.removeAtIndex(1)
array4.removeAtIndex(2)
println(array4)

//替换0-2位置的值
array4[0...2]=[6,7,8]
println(array4)

for value in array4
{
    println(value)
}
//打印index
for(indext,value) in enumerate(array4)
{
    println("indext=\(indext),value=\(value)")
}


//-------------------元组-----------
//很类似结构体

var person:(name:String,age:Int,address:String)=("徐小龙",30,"广州")//实质就是定义了三个变量name,age,address
println(person)
println(person.age)
println(person.2)

//把元组赋值给另一个元组
var(name,age,address)=person
var (names,ages,_)=person//用下划线忽略掉第三个不想要的元素
println(names)

//----------------字典---------------
//字典的所有ke值必须是同一类型的,所有的value值也必须是同一类型的 key和value可以不是同一类型的(不同版本不一样,处了强制写了数据类型的必须一样外)

//字典用[]
var dic:Dictionary = ["ke1":"va1","ke2":"va2"]
println(dic)
var dic1:Dictionary<Int,Int> = [1:11,2:22]//强制int类型

//常用方法
//添加一个键值对
//当字典中没有这个键值对表示添加,否则为修改(覆盖掉)
dic["ke3"]="va3"
dic["ke1"]="va11"
println(dic)
//删除
dic.removeValueForKey("ke1")
println(dic)
//得到字典里面所有key值
println(Array(dic.keys))
//得到字典里面所有value值
println(Array(dic.values))

//--------------------可选类型---------
//可选数据类型 就是在我们基础数据类型后加?
//Optional()就是一个可选类型
var aaw:Int?
aaw = 6
//当我们想要输出里面的内容的时候就需要将其解包 注意:解包前可选类型变量的值不能为空 需要先赋值 为空强制解包会造成程序崩溃
println(aaw)
println(aaw!)

//------------------流程控制语句----------

//在这里没有非0即为真的说法 只有ture和false
var g = 1
//if语句的()可以不写
if g==1
{
    println("yes")
}else
{
    println("no")
}
//switch
//1switch语句必须要default语句
//2switch语句case里面必须要有一句代码
//3每条case语句后面都自带了一个break
var s = 2
switch s
{
case 1:
    println("1")
case 2:
    println("2")
case 3:
    println("3")
default:
    println("default")
   
}
//
var tt = 2
switch tt
{
case 1:
    println("1")
case 2,3:
    println("2或3")
    fallthrough//不管下条语句是否正确 都会执行
case 4:
    println("4")
default://必须要有这条语句
    println("default")
}

//case 可以是一个范围,而且范围还可以交叉,交叉值只走第一种情况
var s2=10
switch s2
{
case 1...15:
    println("1...15")
case 5...15:
    println("5...15")
default:
    println("default")
}
//双重判定
switch s2
{
case 1...15 where tt==3:
    println("s2在1到15之间 tt的值为3")
default:
    println("default")
}

//switch可以传递一个元组
var point=(0,4)
switch point
{
case(_,0):
    println("在X轴上面")
case(0,_):
    println("在Y轴上面")
case(0,4):
    println("就是我的点")
default:
    println("default")
}


//------------------循环结构----------

//与C语言没什么太大区别 就是加不加()
for var i=0;i<10;i++
{
    for var j=0;j<10;j++
    {
        println("i=\(i) j=\(j)")
        if i==3&&j==4
        {
            break;//终止内层循环
        }
    }
}
//switch标记的使用
aa:for var i=0;i<10;i++
{
    for var j=0;j<10;j++
    {
        if i==3&&j==4
        {
            println("hd")
            break aa;//
        }
       
    }
}


//---------------------函数---------
//func(函数的关键字)
//switch 函数定义的格式 func 函数名(参数名:)->返回值类型{语句块}

func sayHi(name:String)->String
{
    return name + "你好"
}
var sa = sayHi("世界")
println(sa)

//两个数之和
func sum(summ1:Int ,summ2:Int)->Int
{
   
    return summ1 + summ2
}
var summ = sum(10,10)
println(summ)

//返回值如果是多个 可以以元组的方式返回出来
func countNumber()->(saa:Int,sbb:Int)
{
    var saa=1
    var sbb=2
    return (saa,sbb)
}
var s_n = countNumber()
println(s_n.saa)


//---------------------闭包----------
//闭包是一个封闭式的代码块,类似于block
//语法格式((参数列表)返回值类型 in 返回值)

//正常的函数调用
//数组排序
var mans = ["zhangsan","lisi","wangwu","zhaoliu"]
func sortByName(s1:String,s2:String)->Bool
{
    return s1>s2
}
var s3 = sorted(mans,sortByName)//依次从数组中取两个元素 传给sortByName进行比较
println(s3)

//闭包方式
var s4=sorted(mans, { (s1:String, s2:String) -> Bool in
    return s1>s2
})
println(s4)
posted @ 2015-08-07 16:55  wusang  阅读(172)  评论(0编辑  收藏  举报