/**
* 常量与变量
* 常量用 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, "错误信息啦~")