//
// main.swift
// swift01
//
// Created by DioneFlora on 16/10/20.
// Copyright (c) 2016年 DioneFlora. All rights reserved.
//
swift第一課
//swift里面沒有頭文件和實現文件,只有一個swift文件
//swift里面沒有main的概念,程序從main.swift開始執行
//swift每一條執行語句可以不用分號結束,多條語句在同一行的時候才需要分號區分
//swift引用其他文件的內容直接引用,不用導頭文件
//print是swift里面的打印函數,效率比NSLog要高;可以不使用占位符,拼接采用()
//變量,常量,可選類型,控制流
//變量:定義之后允許改變,通過var表示
//常量:定義了之后不允許改變,通過let,常量定義出來一定要賦值,不賦值會出錯
//swift會根據初值來對變量進行自動推斷
//明確指明數據類型 let/var 變量名:數據類型=初值
import Foundation
let number = 20
let number1 = 12.3
var number2:Int = 20
//var number2 = 25.6不允許
//不同數據類型之間不能直接運算,必須進行強轉let result = number1 + number2
let result:Int = Int(number1) + number2
let result1:Double = number1 + Double(number2)
print("result = (result)")
print("Hello(1234),World(5678)!")
//字符Character:用雙引號表示,單個字母,指明類型Character
let cha:Character = "a"
//字符串:String:雙引號表示多個字符
let str = "HelloWorld"
//可選類型:如果某一個變量可能為空(nil),那么這個變量就是數據可選類型,可選類型用 ? 進行表示
//打印可選類型會有optional字眼,如果要去掉optional就進行強制解包
//var 變量名:數據類型? = 初值(可以不給初值(var 變量名:數據類型))
var num0:Int? = 50
//num0 = nil(如果不注釋,令值為nil 崩潰,提示錯誤atal error: unexpectedly found nil while unwrapping an Optional value)
let num1:Int = 20
//可選類型不能直接參與運算,必須進行強制解包之后才可以參加運算,強制解包用 ! 表示
//對可選類型進行強制解包必須確保可選類型的值不是nil,否則對nil進行強制解包會導致系統崩潰(即上段注釋num0……)
let sum = num0! + num1
print("sum = (sum)")
let 猴子 = "請來的逗比"
print("(猴子)")
println("Hello, World!")
//布爾類型
let flag:Bool = true //false
//條件判斷:if
//(1)if后面的小括號可以去掉,大括號不能省略(即使里面只有一句代碼)
//(2)if沒有非零即真的概念,只有true or false
if(flag){
print("flag is true");
}
let value = 10
if value > 0{
print("value != 0")
}
//(3)可選類型的條件判斷
var name:String? = "hello"
//<1>:if-let/var:先判斷可選類型name是否為nil,如果不為空,就將name進行強制解包后的值,賦值給temp,然后執行代碼段,否則的話就不執行
print(name)
if let temp = name{
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遍“hello”
var n:Int? = 8
if let temp = n {
for var i=0;i < temp;i++ {
print("hello")
}
}
//<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,否則就打印該數是奇數
var myValue:Int? = 8
if let temp = myValue where temp % 2 == 0 {
for var i = 0;i < temp;i++ {
print("helloWorld")
}
}else if let temp = myValue where temp % 2 == 1{
print(temp,"該數是奇數")
}
//a = b ?? value
//??是將b這個可選值進行判斷,如果b不為nil則對b進行強制解包后的值給a,如果b為nil則為a提供一個默認值value
let bilibili:Int? = nil
let asd = bilibili ?? 3
print("asd = (asd)")