// main.swift
// SwiftLesson01
//
// Created by lanou on 16/10/20.
// Copyright (c) 2016年 lanou. All rights reserved.
//
//swift里面没有头文件和实现文件,只有一个.swift文件
//swift里面没有main的概念,程序从main.swift开始执行
//swift每一条执行语句可以不用分号结束,多条语句在同一行的时候才需要分号区分
//swift引用其他文件的内容直接引用,不用导头文件
import Foundation
//print是swift里面的打印函数,效率比NSLog要高,println结束换行
//可以不使用占位符,拼接采用\()
println("Hello\(1234) World\(5678)!")
//变量:定义之后允许改变,通过var来表示
//常量:定义之后不允许改变,通过let来表示,常量定义出来一定要赋值,不赋值会报错
//swift会根据初值来对变量进行自动推断
//明确指明数据类型 let/var 变量名:数据类型 = 初值
let number = 20
let number1 = 12.3
//number = 30(Cannot assign to 'let' value 'number')
var number2:Int = 20
//number2 = 34.4 不允许
//不同数据类型之间不能直接运算,必须进行强转
let result:Int = Int(number1) + number2
let result1:Double = number1 + Double/*不能用float*/(number2)
println("result = \(result)")
//字符Character:用双引号表示,单个字母,指明类型Character
let cha:Character = "a"
//字符串String:双引号表示,多个字符
let str = "Hello World"
//可选类型:如果某一个变量可能为nil(空),那么这个变量就是数据可选类型
//可选类型用 ? 进行表示
//var 变量名:数据类型? = 初值(可以不给初值)
var num:Int? = 30
//可选类型不能直接参与运算,必须进行强制解包之后才可以参加运算,强制解包用 ! 表示
//打印可选类型会有optional字眼,如果要去掉optional就进行强制解包
//对可选类型进行强制解包必须确保可选类型的值不是nil,否侧对nil进行强制解包会导致系统奔溃
//当num为nil时: fatal error:unexpectedly found nil while unwrapping an Optional value
let sum = num! + num1
println("sum = \(sum)")
//布尔类型
let flag:Bool = true //false
//条件判断:if
//1.if后面的小括号可以去掉,大括号不能省略(即使里面只有一句代码)
if (flag){
println("flag is true")
}
//2.if没有非零即真的概念,只有ture/false
let value = 10
if value > 0 {
println("value != 0")
}
//3.可选类型的条件判断
var name:String? = "Hello"
//<1>: if-let/var:先判断可选类型name是否为nil(空)
//如果不为nil就将name进行强制解包后的值赋值给temp,然后执行代码段,否则的话就不执行
println("\(name)")
if var temp = name {
temp += "World"
println(temp)
}
//<2>: if-let/var-where:实在if-let/var的基础上对定义的局部变量再做一次判断
//两个条件都满足的话,执行{}里面的代码块
if let temp = name where temp == "Hello" {
println("name = Hello")
}
//定义一个整型可选值n,如果该整型可选值不为nil,使用for循环打印n遍"zero"
var count:Int? = 3
if let temp = count {
for(var i = 0; i < temp; i++){
println("zero")
}
}
//<3>: guard:如果可选值count不为nil,就强制解包后的值给temp
//否则就执行else后面{}里面的代码块,return一定要写
func demo(){
let count1:Int? = 3
guard let temp = count1 else {
println("count 为 nil")
return
}
println(temp)
}
demo()
//示例:定义一个整型可选值myValue,如果该值不为nil并且是偶数,就用for循环打印myValue遍"Hello World",否则打印"该数是奇数"
var myValue:Int? = 4
if let temp = myValue where temp % 2 == 0 {
for(var i = 0; i < temp; i++){
println("Hello World")
}
} else {
println("myValue为奇数或者为nil")
}
//a = b ?? value
//?? 是将b这个可选值进行判断,如果b不为nil,则对b进行强制解包后的值赋给a
//如果b为nil,则为a提供一个默认值value
let bilibili:Int? = nil
let asd = bilibili ?? 3
println("asd = \(asd)")
// SwiftLesson01
//
// Created by lanou on 16/10/20.
// Copyright (c) 2016年 lanou. All rights reserved.
//
//swift里面没有头文件和实现文件,只有一个.swift文件
//swift里面没有main的概念,程序从main.swift开始执行
//swift每一条执行语句可以不用分号结束,多条语句在同一行的时候才需要分号区分
//swift引用其他文件的内容直接引用,不用导头文件
import Foundation
//print是swift里面的打印函数,效率比NSLog要高,println结束换行
//可以不使用占位符,拼接采用\()
println("Hello\(1234) World\(5678)!")
//变量:定义之后允许改变,通过var来表示
//常量:定义之后不允许改变,通过let来表示,常量定义出来一定要赋值,不赋值会报错
//swift会根据初值来对变量进行自动推断
//明确指明数据类型 let/var 变量名:数据类型 = 初值
let number = 20
let number1 = 12.3
//number = 30(Cannot assign to 'let' value 'number')
var number2:Int = 20
//number2 = 34.4 不允许
//不同数据类型之间不能直接运算,必须进行强转
let result:Int = Int(number1) + number2
let result1:Double = number1 + Double/*不能用float*/(number2)
println("result = \(result)")
//字符Character:用双引号表示,单个字母,指明类型Character
let cha:Character = "a"
//字符串String:双引号表示,多个字符
let str = "Hello World"
//可选类型:如果某一个变量可能为nil(空),那么这个变量就是数据可选类型
//可选类型用 ? 进行表示
//var 变量名:数据类型? = 初值(可以不给初值)
var num:Int? = 30
//可选类型不能直接参与运算,必须进行强制解包之后才可以参加运算,强制解包用 ! 表示
//打印可选类型会有optional字眼,如果要去掉optional就进行强制解包
//对可选类型进行强制解包必须确保可选类型的值不是nil,否侧对nil进行强制解包会导致系统奔溃
//当num为nil时: fatal error:unexpectedly found nil while unwrapping an Optional value
let num1:Int = 20
let sum = num! + num1
println("sum = \(sum)")
//布尔类型
let flag:Bool = true //false
//条件判断:if
//1.if后面的小括号可以去掉,大括号不能省略(即使里面只有一句代码)
if (flag){
println("flag is true")
}
//2.if没有非零即真的概念,只有ture/false
let value = 10
if value > 0 {
println("value != 0")
}
//3.可选类型的条件判断
var name:String? = "Hello"
//<1>: if-let/var:先判断可选类型name是否为nil(空)
//如果不为nil就将name进行强制解包后的值赋值给temp,然后执行代码段,否则的话就不执行
println("\(name)")
if var temp = name {
temp += "World"
println(temp)
}
//<2>: if-let/var-where:实在if-let/var的基础上对定义的局部变量再做一次判断
//两个条件都满足的话,执行{}里面的代码块
if let temp = name where temp == "Hello" {
println("name = Hello")
}
//定义一个整型可选值n,如果该整型可选值不为nil,使用for循环打印n遍"zero"
var count:Int? = 3
if let temp = count {
for(var i = 0; i < temp; i++){
println("zero")
}
}
//<3>: guard:如果可选值count不为nil,就强制解包后的值给temp
//否则就执行else后面{}里面的代码块,return一定要写
func demo(){
let count1:Int? = 3
guard let temp = count1 else {
println("count 为 nil")
return
}
println(temp)
}
demo()
//示例:定义一个整型可选值myValue,如果该值不为nil并且是偶数,就用for循环打印myValue遍"Hello World",否则打印"该数是奇数"
var myValue:Int? = 4
if let temp = myValue where temp % 2 == 0 {
for(var i = 0; i < temp; i++){
println("Hello World")
}
} else {
println("myValue为奇数或者为nil")
}
//a = b ?? value
//?? 是将b这个可选值进行判断,如果b不为nil,则对b进行强制解包后的值赋给a
//如果b为nil,则为a提供一个默认值value
let bilibili:Int? = nil
let asd = bilibili ?? 3
println("asd = \(asd)")