SWIFT基础语法 (一)
2016-03-18 10:08
477 查看
SWIFT的main函数是隐藏的main函数,运行的时候会直接被调用,没有分号(加上也不会报错),用let定义常量,var定义变量。
编译器可以通过你的赋值判断你所创建的常量或变量的类型。如果要是不能准确判断的话,就在变量名后指定类型。
可以同时使用if 和let来防止值的丢失。这些值是可选的,可通过包含另一个值或者包含nil来指明该值不存在。通过在类型后添加问号来标记一个值为可选。
使用for-in来迭代字典中的元素,需要提供一对名字来访问每一个键值对。
使用while来重复执行一个代码块直到条件改变,循环条件可以放到最后,用于保证循环至少被执行一遍。
可以在循环中维持一个索引。一种方法是使用..来表示一段索引区域,另一种方法是显式的指明初始值、判断条件以及每次循环的增量。以下的两个循环做的是同样的事情:
函数可以有可变长度的参数,通过数组来包含它们。
函数可以嵌套。嵌套函数可以访问在外部函数中声明的变量。可以使用嵌套函数来包装冗长和复杂的代码。
一个函数可以使用另一个函数作为参数。
常量和变量
常量和变量let myValue = 40 var anotherValue = 30 anotherValue = 20
编译器可以通过你的赋值判断你所创建的常量或变量的类型。如果要是不能准确判断的话,就在变量名后指定类型。
let valueDouble = 2.0 let valueInteger = 2 let valueDouble:Double = 2
值转化类型
值转化类型let strLable = "The width is" let width = 94 let withLable = strLable + String(width) //还有一种非常方便的方法,在字符串里添加值,在圆括号中书写值,并在括号前添加反斜线 \ let apples = 3 let oranges = 5 let appleSummary = "I have \(apples)apples" let fruitSummary = "I have \(apples + oranges) piece of fruit"
字典、数组
使用[]来创建数组和字典,通过方括号中的索引或键名来访问其中的元素。var shoppingList = ["a","b"] shoppingList[1]="26 of b" //修改数组中的元素值 var occupations = ["name":"candy","age":19] occupations["job"] = "iOS" //向字典里添加键值对 //用初始化语法创建一个空的数组或者字典 let emptyArray = String[]() let emptyDictionary = Dictionary<String,Float>() //如果无法推断类型信息,可以用[]来创建一个空数组,使用[:]来创建一个空字典。 var shoppingListArray = [] var shoppingListDictionary = [:]
循环语句
用if和switch来作为条件控制,使用for-in、for、while、do-while来构造循环。包装条件或者循环变量的圆括号可以省略,但是主体外的花括号是必须的。let individualScores = [76,78,98,0] var teamScore = 0 var score in individualScores{ if score > 50{ teamScore +=3 else{ teamScore +=1 } } print("%@",teamScore) //在if语句中,条件必须是一个布尔表达式-------这表示如“if score{。。。。。}”这样写的代码是错误的,并不能隐式的同0进行比较。
可以同时使用if 和let来防止值的丢失。这些值是可选的,可通过包含另一个值或者包含nil来指明该值不存在。通过在类型后添加问号来标记一个值为可选。
var optionalString:String? = "hello" optionalString = nil var optionalName:String? = "John" if let name = optionalName { //如果optionalName不是nil的话, let name = optionalName 为true NSLog("hello"+name) } //如果可选值为nil,则条件判断为false,花括号中的代码会被跳过。反之,可选值去包装并且赋值给let后面的常量(去包装:不再是可选的,成为了一个确切的值,不再存在为空的情况),使得去包装的值可以在代码块内访问。
switch
switch支持所有类型的数据,以及多种比较运算—没有限制必须是整数,也没有限制必须相等。let vegetable = "red pepper" switch vegetable{ case "celery": let vegetableComment = "hahahha" case "red pepper": let vegetableComment = "red pepper" case let x where x.hasSuffix("pepper"): let vegetableComment = "is it a spicy \(x)?" default: let vegetableComment = "Everything tastes good in soup." } //执行完匹配到的case后,程序会跳出switch,而不是继续执行下一个case,所以不需要在case的代码后添加break来跳出switch。
使用for-in来迭代字典中的元素,需要提供一对名字来访问每一个键值对。
let interestingNumbers = [ "prime":[2,3,4,5,5], "Fibonacci":[2,4,56,5], "Square":[2,5,7,8,6,4] ] var largest = 0 for (kind,numbers) in interestingNumbers{ for number in numbers{ if number > largest{ largest = number } } }
使用while来重复执行一个代码块直到条件改变,循环条件可以放到最后,用于保证循环至少被执行一遍。
var n = 2 while n < 100 { n = n*2 } var m = 2 do{ m = m *2 }while m < 100
可以在循环中维持一个索引。一种方法是使用..来表示一段索引区域,另一种方法是显式的指明初始值、判断条件以及每次循环的增量。以下的两个循环做的是同样的事情:
var firstForLoop = o for i in 0..3 { firstForLoop += i } var secondForLoop = 0 for var i = 0; i < 3; i++ { secondForLoop += 1 } //使用..来创建一个或略最高值的取值区间,使用...构造的范围则同时包含最高值和最低值。
函数、闭包
函数和闭包:使用func来声明一个函数。通过在函数名后面添加包含参数列表的花括号来执行函数,使用->来分离参数和返回类型。func greet (name:String,day:String)->String{ return "Hello \(name),today is \(day)" }
元组
使用元组(tuple)来返回多个值func getGasPrices() -> (String,Double,Int){ return ("name",168.0,19) }
函数可以有可变长度的参数,通过数组来包含它们。
func sumOf (numbers:NSArray) -> Int { var sum = o for number in numbers{ sum += number } return sum }
函数可以嵌套。嵌套函数可以访问在外部函数中声明的变量。可以使用嵌套函数来包装冗长和复杂的代码。
funcc returnFifteen() -> Int{ var y = 10 return add(y) } func add(number:Int){ number += 5 }
一个函数可以使用另一个函数作为参数。
fun hasAnyMatches(list:Int[],condition:Int -> Bool) -> Bool{ for item in list{ if condition(item){ return true } } return false } func lessThanTen(number:Int) -> Bool{ return number < 10 } var numbers = [20,19,3] hasAnyMatches(numbers,lessThanTen)
相关文章推荐
- pod install 与 pod update的区别
- IOS --- OC与Swift混编
- Swift学习总结(个人总结,以方便理解为主)
- Swift开发第八篇——方法嵌套&命名空间
- swift中闭包的循环引用
- 使用Swift在Xcode中创建自定义控件
- Swift开发第七篇——字面量转换&下标
- Swift实现视图拉伸效果
- Swift中混用OC的方法
- IOS Swift 弹出框的写法(就是Android的AlertDialog)
- swift开发笔记23 引入百度地图
- Swift 实践之绘画
- RxSwift 函数响应式编程
- RxSwift 函数响应式编程
- RxSwift(一)
- RxSwift(一)
- 关于Swift as类型强转的细节说明
- swift 2.0 用代码写一个简单地UIWebView
- How to change tintColor of UIBarButtonItem? [SWIFT]
- 分享一个php邮件库——swiftmailer