Swift基础:创建第一个Swift工程:Swift的基本语法
苹果公司在今年的WWDC大会上,除了发布了iOS8和Max OS X 10.10之外,还发布了一个新的编程语言Swift。不得不说,Swift有较大的转变,也使编程变得更加容易了,下面介绍了Swift的常量和变量的定义,基本控制语句的使用:
需要注意的是:Swift只能在Xcode 6 Beta版中运行,Xcode 6 目前最新的是Beta 7,大家可以通过以下链接下载:
http://adcdownload.apple.com//Developer_Tools/xcode_6_beta_7_apzr94/xcode_6_beta_7.dmg
下载完成后打开。
一、创建第一个Swift工程:
1.创建一个Swift工程:
如下图所示,打开Xcode 6之后,会出现一个欢迎界面,选择第二项:Create a new Xcode project(创建一个新的Xcode工程)
2.在Choose a template for your new project:页面,选择OS X下面的Application,然后选择选择右面的Command Line Tool,然后点击Next(如下图所示):
3.在Choose options for your new project:界面,第一个输入工程名字,然后记得在Language中选择Swift,然后继续next(如图所示):
4.选择路径,这个不用多说了,然后create(如图所示):
5.然后你会看到下面的界面,点击左边工程的下三角,出现了一个main.swift文件,点击之后如图所示:
6.点击左上角的运行按钮(快捷键:command + R),你会发现控制台打印出了所有编程语言的第一句话:Hello,World,至此,Swift工程创建完毕。
二、Swift的基本语法:
下面来介绍Swift的基本用法(在main.swift中的代码):
importFoundationprintln("Hello,World!")println("你好,世界!")//定义一个常量,使用关键字“let”//在Swift中,几乎对所有的基本数据类型或者是对象类型使用结构体进行了重写lethaiDian="海淀"//lethaiDian:String="海淀"//在Swift中,系统会帮你做类型推断,上一行的代码和此行一样//\(变量名)把变量或者常量名转化为字符串进行输出println("haiDian=\(haiDian)")//"\(变量/常量名)"可以把变量/常量转化为字符串输出//直接输出println(haiDian)//定义一个变量,使用关键字“var”varhello="你好,"hello=hello+haiDian//字符串重载:字符串拼接println("hello=\(hello)")//Swift几乎支持所有的Unicode编码的字符(除了数学中的符号、箭头和横线)来对变量/常量进行命名let狗="Dog,"println(狗)var=狗+"爱你"println()//定义一个整型(类型推断)vara=10//定义一个整型,其实这个语句,编译器会帮我们推断为:vara:Int=10,格式为:“变量/常量名:类型”,在Swift中整型是Int,如果系统是32位,那么这个变量就是Int32,如果系统是64位,那么就是Int64,如果我定义一个8位的整型树,那么需要显式的指定为Int8:varb:Int8=12//显式指定Int的位数varc=12.0//在Swift中,浮点型数据默认是Doublevard=Double(b)+c//在Swift中,不支持隐式转换,如果想把两个不同类型的数据进行操作,那么需要显式的转换其类型,转换格式为:“类型名(常量/变量名)”//元组,元组借鉴了关系型数据库里面的概念,关系型数据库里面的一条数据就是一个元组,元组中可以存放不同类型的数据,和结构体类似,但是结构体需要先进行声明,元组可以直接创建使用//定义一个元组leterrorCode=(404,"NotFount")//这是一个(Int,String)类型的元组,相当于:leterrorCode:(Int,String)=(404,"NotFount")//元素分解(取出元组中的元素)//取出元组里面的元素(通过下标取出)println("errorCode=\(errorCode.0),errorMessage=\(errorCode.1)")//可以在创建元组的时候,给元组里面的元素声明类型名称leterrorCodeA=(errorCode:404,errorMessage:"NotFound")//通过类型名称取出元素println("errorCode=\(errorCodeA.errorCode),errorMessage=\(errorCodeA.errorMessage)")println(errorCodeA)//如果忽略元组对应位置的元素,那么可以使用“_”let(statusCode,_)=errorCodeAprintln("statusCode=\(statusCode)")//数组:在Swift数组中,只能存放同一类型的数据,这样才能对数组进行存取操作。如果数据类型不是相同的,则会转换为NSArray来处理//使用var来声明一个可变数组,varnameArrayA=["张三","李四","王五"]//相当于:varnameArrayA:String[]=["张三","李四","王五","赵六"]println("nameArrayA=\(nameArrayA)")//定义一个空的数组varsomeValues=[Int]()//声明了一个空的数组,数组里面的元素都是Int,在Xcode6Beta4之前得版本,写法是:Int[]()varnameArrayC=["Hello",123]//往数组中添加元素nameArrayA.append("赵六")println("nameArrayA=\(nameArrayA)")//替换数组里面的元素nameArrayA[0]="第一个"println(nameArrayA)//删除数组里面的元素nameArrayA.removeAtIndex(0)println(nameArrayA)//删除最后一个元素nameArrayA.removeLast()println(nameArrayA)//定义不可变数组,数组的可变和不可变是通过let和var进行声明的,在Xcode6beta4之前,不可变数组(常量数组)不能添加和删除元素,但是可以对元素进行更改,但是在Xcode6Beta4之后,常量数组也不能更改里面的元素letnameArrayD=["张三","李四","王五"]//nameArrayD[0]="替换"fornameinnameArrayD{println("name=\(name)")}//既取出数组里面的元素,又得到元素所在的下标,需要使用enumerate(数组名)方法for(index,name)inenumerate(nameArrayD){println("index=\(index),name=\(name)")}//字典,在Swift中,字典所有的key是同一个类型,所有的Value是同一个类型,key和value可以是不同的类型,如果不是相应的同一类型,则自动转换为OC中的NSDictionary//声明一个空的字典vardictionaryStudent=Dictionary<String,Float>()varperson=["name":"辉哥","sex":"男"]//相当于:varperson:Dictionary<Sting,String>=["name":"辉哥","sex":"男"]println("person=\(person)")//字典的打印是无序的//往字典里面添加键值person["habit"]="抽烟"println("person=\(person)")//如果字典里面没有这个key,那么直接添加,如果已经存在这个key了,那么直接把之前的value替换掉person["name"]="波哥"println("person=\(person)")//更新某个key对应的value,使用updateValue(value,forKey:key)进行更新的时候,会返回更新之前的旧值letoldValue=person.updateValue("崔哥",forKey:"name")println("person=\(person),oldValue=\(oldValue)")//字典的遍历for(key,value)inperson{println("key=\(key),value=\(value)")}//字典的可变和不可变也是通过let和var进行控制的,不可以对常量字典进行更新//控制语句:if,if...else,while,do...while,switch...casevarnum=3varcondition=true//ifnum{//不加小括号,后面的判断条件只能是Bool类型,整型和其它的类型都不可以//println("这是整型")//}ifcondition{println("这是一个Bool值")}forvari=0;i<10;i++{println("i=\(i)")}forjin0..<3{//“..<”包括左边的,不包括右边的,在Xcode6Beta4之前的版本,使用“..”println("j=\(j)")}forjin0...4{//“...”既包括左边的,又包括右边的println("j=\(j)")}//switch,在Swift中,对switch进行了很大的更改,默认不需要写breakvarnumber=20switchnumber{case10:println("number=10")case20:println("number=20")default:println("other")}//如果想强制执行下一条语句的话,需要使用fallthrough关键字,本语句必须是满足条件的varnumberA=10switchnumberA{case10:println("number=10")fallthroughcase20:println("number=20")//fallthrough//相当于OC中不写break的效果default:println("other")}//case是一个范围varnumberB=12switchnumberB{case1..<10:println("这是一位数")case10..<100:println("这是两位数")default:println("这是其它数字")}//case的范围可以交叉,但是只执行第一个满足条件的case语句varnumberC=12switchnumberC{case1..<20:println("在1~20之间")case10..<100:println("在10~100之间")default:println("其它")}//可以进行双重判定(使用“where判定条件”关键字)varnumberD=13switchnumberD{case1..<20wherenumberD<15:println("numberD=12")case10..<100:println("两位数")default:println("其它数字")}//判断点在坐标系的什么位置,“_”:忽略元组中对应位置的值varpoint=(3,5)switchpoint{case(0,0):println("原点")case(_,0):println("X轴")case(0,_):println("Y轴")default:println("在象限内")}varpointA=(0,4)switchpointA{case(0,0):println("原点")case(letx,0):println("X轴,x=\(x)")case(0,lety):println("Y轴,y=\(y)")default:println("在象限内")}//optionals,可选变量,如果使用optionals对变量进行声明,那么这个变量的值可能是空(nil)。(需要注意拆包/解包)//在Swift中只有nil表示空,没有Nil,NULL,null,NSNullvarvalue:Int?//“?”表示这是一个可选变量,值可能为nilletnumberStr="123456.3"value=numberStr.toInt()ifnil!=value{//在Xcode6Beta6之后,Int?不能作为判断条件,之前可以(直接value)println("有值:value=\(value)")}varvalueA=21letvalueB=valueA+value!//拆包/解包,如果没有值,则不能解包println("valueB=\(valueB)")
其中我把各个语句的解释都放到代码中了,大家可以直接粘贴到工程中查看,更加方便学习。
以上就是Swift工程的创建和一些基本语句的学习,希望对大家有所帮助。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。