/**
* 常量與變數
* 常量用 let 關鍵字來宣告
* 變數用 var 關鍵字申明
* 變數設定後,可以改變值
* 常量設定後,無法改變
*/
let Name="Enda";
var old=21;
// 可以一行申明多個
var t="t",e="e";
let a="a",b="b";
// 可以設定型別
var Hi:String
/**
* 整數
* 注視就是沒有小數部分的數字,比如 42 和 -23
*/
// 整數範圍
let minValue = UInt8.min
let maxValue = UInt8.max
println(minValue)
/**
* 浮點數
* 浮點數是指有小數部分的數字,比如3.14159
* Double表示64位浮點數。當你需要儲存很大或者很高精度的浮點數時請使用此型別。
* Float表示32位浮點數。精度要求不高的話可以使用此型別
*/
var fl = 3.14158
var dl:Double = 1333.33
/**
* 型別別名
* 使用typealias關鍵字來定義型別別名
*/
typealias Enda = String;
var cenda:Enda
/**
* 布林值
* 一個 true 一個 false
*/
var bu = true;
var er = false;
/**
* 元祖
* 元祖就是把多個值組成一個複合值
*/
var syuanchao = (21,"Enda","北京","夢想")
// 分解元祖
var (sold,sname,_,sdrem) = syuanchao;
// 不想取的,可以用 _ 忽略
println("hi,我名字是 (sname),今年(sold)歲,夢想:(sdrem)");
// 還可以通過下標來訪問 從0 開始
println("年齡:(syuanchao.0)")
println("姓名:(syuanchao.1)")
// 也可以定義的時候把名字帶上
var endaInfo = (endaName:"Enda",endaOld:21,endaCity:"北京",endaDrem:"追夢者")
println("hi,我是一名(endaInfo.endaDrem),我是 (endaInfo.endaName),來自(endaInfo.endaCity)")
/**
* 可選型別
* 使用可選型別(optionals)來處理值可能缺失的情況。可選型別表示:有值,等於 x 或者 沒有值
*/
/**
* nil
* 你可以給可選變數賦值為nil來表示它沒有值
*/
/**
* 隱式解析可選型別
*/
let possibleString: String? = "hi"
println(possibleString!) // 需要驚歎號來獲取值
// 輸出 "hi."
// 你可以把隱式解析可選型別當做一個可以自動解析的可選型別。你要做的只是宣告的時候把感嘆號放到型別的結尾,而不是每次取值的可選名字的結尾
let assumedString: String! = "what are you 弄啥勒."
println(assumedString) // 不需要感嘆號
// 輸出 "what are you 弄啥勒."
/**
* 斷言
*/
// 因為 age < 0,所以斷言會觸發
let age = -3
assert(age >= 0, "錯誤資訊啦~")