//
// main.swift
// swiftLesson01
//
// Created by SZT on 2016/10/20.
// Copyright © 2016年 SZT. All rights reserved.
//
//swift ⾥⾯没有头⽂件和实现⽂件,只有⼀个.swift⽂件
//swift⾥⾯没有main的概念,程序从main.swift开始执⾏
//swift每⼀条执⾏语句可以不⽤分号结束,多条语句在同⼀⾏的时候才需要分号区分
//swift引⽤其他⽂件的内容直接引⽤,不⽤导头⽂件
//print是swift⾥⾯的打印函数,效率⽐NSLog要 ⾼; 可以不使⽤占位符,拼接采⽤\()
//变量 常量 可选类型 控制流
import Foundation
//变量:定义之后允许改变,通过var来表示
//常量:定义了之后不允许改变,通过let, 常量定义出来⼀定要赋值,不赋值会出错
//swift会根据初值来对变量/常量 进⾏⾃动推断
//明确指明数据类型 let/var 变量名:数据类型 = 初值
let number = 20
let number1 = 12.3
var number2:Int = 20
//number2 = 34.4不允许
//不同数据类型之间不能直接运算,必须进⾏强转
let result:Int = Int(number1)+number2
let result1:Double = number1 + Double(number2)
print("result = \(result)")
//字符Character:⽤双引号表示,单个字⺟,指明类型Character
let cha:Character = "a"
//字符串:String:双引号表示,多个字符
let str = "HelloWorld"
//可选类型:如果某⼀个变量可能为nil(空),那么这个变量就是数据可选类型,可选类型⽤ ? 进⾏表
示
//打印可选类型会有optional字眼,如果要去掉optional就进⾏强制解包 !
//var 变量名:数据类型? = 初值(也可以不给)
var num0:Int? = 50
//num0 = nil
let num1:Int = 20
//可选类型不能直接参与运算,必须进⾏强制解包之后才可以参加运算,强制解包⽤ ! 表示
//对可选类型进⾏强制解包必须确保可选类型的值不是nil,否则对nil进⾏强制解包会导致系统奔溃
// unexpectedly found nil while unwrapping an Optional value
let sum = num0! + num1
print("sum = \(sum)")
let � = "请来的逗逼"
//print("\(� )")
//print("Hello\(1234), World\(5678)!")
//布尔类型
let flag:Bool = true//false
//条件判断:if
//(1)if后⾯的⼩括号可以去掉,⼤括号不能省略(即使⾥⾯只有⼀句代码)
if flag{
print("flag is true");
}
//(2)if没有⾮零即真的概念,只有true/false
let value = 10
if value > 0 {
print("value > 0")
}
//(3)可选类型的条件判断
var name:String? = "hello"
//<1>: if-let/var:先判断可选类型name是否为nil(空),如果不为nil就将name进⾏强制解包后的值赋
值给temp,然后执⾏代码段。否则的话就不执⾏
print("name = \(name)")
if var temp = name{
temp += "World"
print(temp)
}
//<2>if-let/var-where: 是在if-let的基础上对定义的局部变量再做⼀次判断,两个条件都满⾜的时候执⾏
{}⾥⾯的代码块
if let temp = name where temp == "hello"{
print("if-let-where:name = hello")
}
//定义⼀个整形可选值n,如果该整形可选值不为nil的话,使⽤for循环打印n遍“你妹”
let n:Int? = 5
if let temp = n
{
for var i = 0;i < temp;i++ {
print("你妹")
}
}
//<3> guard:如果可选值count不为nil的话就强制解包后的值给temp,否则就执⾏{}⾥⾯的代码
块,return⼀定要写
func demo(){
let count:Int? = 3
guard let temp = count else{
print("count 为nil")
return
}
print(temp)
}
demo()
//定义⼀个整形可选值myValue,如果该值不为nil并且是偶数的话就⽤for循环打印myValue遍
helloWorld,否则的话就打印该数是奇数