//
// main.swift
// 1Switf_基本数据类型
//
// Created by LZXuan on 16-1-26.
// Copyright (c) 2015年 LZXuan. All rights reserved.
//
//1.swift 没有main函数
//跟脚本语言很像
//从上自下一次执行 语句
import Foundation
//定义函数 无参无返回值
func test1() {
//(c c++ java c# OC等等 的一个产物)
//
//打印输出函数
//带换行的打印
print("Hello, Switf!")
//swift 语句 不需要加';'
//下面的打印函数 不带换行
print("hello,swift", terminator: "")
}
//执行函数中的代码 那么需要调用函数
//test1()
//2.数据类型
//2.1定义常量
func test2() {
//定义一个常量 常量必须要初始化
//定义常量格式 -> let 常量名:类型 = 值
//定义一个整型常量
let age:Int = 24
//定义一个浮点数
let f:Double = 3.14
//定义字符类型
let c:Character = "x"
//打印输出
print(age)
print(f)
print(c)
//可以这样来进行格式化输出一个常量或者变量的值
print("age = \(age)")//类似于C语言的格式化字符串
print("f = \(f)")
print("c = \(c)")
//swift 具有类型推断的功能 可以根据后面的值推断出 常量或者变量的类型
let a = 100//a 就是Int 类型
let 女汉子 = "女汉子"
print(女汉子)
}
//test2()
//2.2 变量
func test3() {
// var 变量名:类型
//定义一个整型变量 可以初始化也可以不初始化 一般都要初始化
var a:Int
let b:Int16 = 12
print(b)
//swift 变量名 实际上 是按照unicode
//变量名/常量名可以是汉字
let 汉 = 123
print("汉:\(汉)")
}
//test3()
//3.溢出
func test4() {
//给a 一个UInt32 的最大值
var a:UInt32 = UInt32.max;
//swift 变量发生溢出这里会报错
//var b = UInt32.max+1
}
//4.强制类型转换
func test5() {
let a:Double = 1.23
let b:Int = 2
//swift不支持隐式转换
//var d:Double = a+b
//var c:Double = b
//不同的数据类型之间 不能直接运算, 如果要运算必须要强转
//类型() 强制类型转换
//把变量b的值得类型 临时强制转换为Double
let d:Double = a+Double(b)
print("d= \(d)")
}
//test5()
//5.布尔值
//swift 引入了真正的布尔 true flase 和c++ 类似
//if 表达式中 必须是布尔值 或者 表达式的值是布尔
func test6() {
//布尔值 只有true 和flase 两个值
let b:Bool = true
print(b)
//可以用于if结构
if(true) {//if 后面的表达式只能是布尔值
print("if结构")
}
if(b) {//if 后面的表达式只能是布尔值
print("if结构")
}
let c:Int = 3
if(c == 3) {//if 后面的表达式只能是布尔值
print("if结构")
}
/* 表达式的值必须是布尔值
if(c = 5) {//if 后面的表达式只能是布尔值
println("if结构")
}*/
}
//test6()
//6.元组
//元组 (30,”xiaohong”) 多个相同数据类型或者不同的数据类型 组合在一起 这就是一个元组
func test7() {
//元组类型 就是(类型1,类型2,....)
//元组不需要定义直接使用
//第一种形式 (类型推断) 元组常量 stu1 ->(String,Int,Double)
let stu1 = ("xiaohong",24,99.1)
print(stu1)
//获取元组中的元素
let name = stu1.0
let age = stu1.1
let score = stu1.2
//索引 是从0开始 访问
print("name:\(name) age:\(age) score:\(score)")
//定义第二种形式的元组常量
//定义 元素的类型 要按照 String Double Int 顺序进行赋值
let stu2:(String,Double,Int) = ("xiaohuang",3.14,24)
//第三种形式定义元素 赋值的时候加标签
let stu3 = (name:"xiaohuang",score:3.14,age:24)
//通过标签访问元素
print("\(stu3.name)-\(stu3.score)-\(stu3.age)")
}
//test7()
//8.可选值类型
/*
可选值 swift 特有
optionals 有一个值 或者没有值 像布尔值
//两种状态 有值 没有值/nil
*/
func test8() {
//定义一个可选值
//?必须要紧跟类型 和 类型之间不能 有空格
//var op1:Int ? = 100 //错误
//有值
let op1:Int? = 100
//没有值
let op2:Int? = nil
//或者
// var op2:Int?
print("op1:\(op1)")
print("op2:\(op2)")
//要想得到可选值变量中的值 那么需要进行解包(强制解析)
//可选值变量+!
let num:Int = op1!//解包 获取可选值 op1中的值
//解包时必须要有值 否则会崩溃
print("num = \(num)")
}
//test8()