import Foundation
//打印函数
print("Hello, World!")
//不用加分号, 字符串就是"", 不用加@
print("41班, 先有创神后有天")
//类型推断: swift会根据初始值类型, 推断常量, 变量的数据类型
//常量和变量
//常量
//常量的定义前面都要加 let
let a = 10
//变量
//变量的定义前面都要加 var
var b = 20
b = 30
//类型声明
//类型安全: 实际类型 和 声明类型必须一致.
var c : Int = 30
//swift 命名比较随意
//不要以阿拉伯数字靠头
var 闯神 = 100.0
print(闯神)
let ?? = 10
print(??)
let 呵呵 = "??"
print(呵呵)
//字符串
var str: NSString = "不要连我的投影"
print(str.stringByAppendingString("123"))
//数组
var array = ["123"]
print(array)
print(array[0])
//往可变数组内添加元素
array.append("1")
//删除数组中的元素
array.removeAtIndex(0)
print(array,"\n",str)
//修改数组内元素
array[0] = "swift 保平安";
print(array)
//字典
var dictionary = ["name":"龙神", "age":18]
//修改元素
dictionary.updateValue("81", forKey: "age")
print(dictionary)
//增加元素
//updateValue方法: 如果key存在就进行更新value, 如果key不存在, 就添加元素
dictionary.updateValue(168, forKey: "height")
print(dictionary)
//删除元素
dictionary.removeValueForKey("height");
print(dictionary)
//获取value
//可选类型: 如果有值, 就是值本身, 如果没有值的话, 就是nil
let value = dictionary["nam"]
//如果确定有值, 可以进行强制解析,强制解析的方法为 !.
// print(value!)
//如果不确定有值, 就要使用隐式解析, 解析方式如下:
if let v = value {
print(v)
} else {
print("没有取到值")
}
//自定义一个可选类型的变量
var 可选类型的变量 : Int?
可选类型的变量 = 123
print(可选类型的变量)
//+ - * / % 三目运算
let aa = 10
let bb = 20
let cc = aa - bb
print(cc)
let dd = aa * bb
print(dd)
print(aa/bb)
//swift可以对浮点型取余
//C语言是不可以的
print(10 % 3.5)
//+除了运算, 可以实现字符串拼接
let 班 = "41 - "
let name = "闯神"
print(班 + name)
//三目运算
let sum = 100
sum >= 10 ? print("sum比较大"):print("10比较大")
//分支结构
//if...else
if(sum > 10){
print("sum > 10")
} else {
print("sum <= 10")
}
//for循环
for var i = 0; i < 10; i++ {
//字符串拼接
print("i = \(i)")
}
//区间[0, 20]
//闭区间
for j in 0...8 {
print("j = \(j)")
}
//区间[8, 20)
for k in 8..<20 {
print("k = \(k)")
}
//while
var num = 10
while num > 0 {
print("num = \(num)")
num--
}
//repeat...while = do...while
//不管条件是否满足, 都要先走一次
var n = 150
repeat {
print("闯神身高 = \(n) cm")
n++
} while(n < 170)
//switch...case
//每个条件语句结束部分不需要添加break, 会自动中止匹配
let hobby = "扫雷"
switch hobby {
case "LOL":
print("龙神爱玩LOL")
case "World Of Warcraft":
print("龙神爱玩魔兽世界")
default :
print("龙神爱玩其他游戏")
}
//定义一个新的常量/变量, 在 case 内把匹配数据接收, 恒成立, 所以下面代码不会执行
let interest = "烫头"
switch interest {
case let x:
print("闯神爱\(x)")
case "唱歌":
print("闯神爱唱歌")
default:
print("闯神爱睡觉")
}
//switch条件匹配
//在where后面添加条件
//如果满足, 才能走这个语句
let x = 160
switch x {
case let y where y > 150:
print("闯神身高大于150, 实际身高\(y)cm")
default:
print("闯神不足150cm!")
}
//穿过
let xx = "女朋友"
switch xx{
case "女朋友":
print("蒋飞有\(xx)")
fallthrough
case "宗主":
print("蒋飞有宗主")
fallthrough
default:
print("蒋飞有手")
}
//元祖
let tuples = ("404", "网站无法打开")
print(tuples.1)
let personTuples = (万少:4121980, 大妈:41272609, 李阳:4101950)
print(personTuples.大妈)
//函数
//定义一个函数
//无参无返回
func helloworld(){
print("hello world")
}
helloworld()
//有参无返回
func helloKitty(name:String){
print("广恩结婚对象的名字是: \(name)")
}
helloKitty("我不知道")
//无参有返回
func helloXuehua()->String {
return "你买单, 我就来"
}
let xuehua = helloXuehua()
print("雪华说:"+xuehua)
//有参有返回
func lotteryLanou(name:String)->String{
if(name == "我"){
return "U 盘"
}else if(name == "范玉珍"){
return "iWatch"
}else{
return "iPad"
}
}
print(lotteryLanou("其他"))
//外部参数(脾气)
func jinhua(脾气 piqi:String){
print("金华脾气\(piqi)")
}
jinhua(脾气:"好!")
func sum(a:Int, b:Int)->Int{
return a+b
}
print(sum(10,b: 20))
//参数默认值
func multiply(a:Int, b:Int = 10){
print("积为\(a*b)")
}
multiply(200)
//布尔值在 swift内只有两个值
//真为 true
//假为 false
func autobiography(name:String, age:Int, gender:Bool){
let 性别 = (gender == true ? "男":"女")
print("我叫\(name),\(性别),\(age)岁")
}
autobiography("李松",age:18,gender:true)
//函数类型
// (Int)->Int
func getName(a:Int)->Int{
return 10;
}
func getAge(a:Int)->Int{
return 100;
}
//初始化一个类型为 (Int)->Int 类型的函数变量
//写法1
//var fu:(Int)->Int = getAge
//print(fu(123))
//类型别名
//函数类型包括两部分, (参数类型,....)->返回值类型, 也就是说具有相同参数和返回值的函数是同一个类型的
//写法2
typealias 整型 = Int
typealias 函数类型1 = (整型)->整型
var fu:函数类型1 = getAge
print(fu(123))
//函数作为函数的参数
func firstDem(a:Int){
}
print(firstDem(10))
func firstFunc(nielei:函数类型1){
print("firstFunc = \(nielei(123))")
}
firstFunc(getName)
//函数作为函数的参数
func second(a : Int)->Int{
return a * 100
}
func second2(a:Int)->Int{
return a * 3
}
func secondFun(f1 : (Int)->Int)->Int {
return f1(20)
}
print(secondFun(second2))
//函数作为函数的返回值
func third1(){
print("闯神不帅")
}
func third2(){
print("我真帅")
}
//重定义()->()类型
typealias functionType2 = ()->()
func thirdFunc(f1:functionType2, f2:functionType2, b:Bool)->functionType2{
return b == true ? f1 : f2
}
//resultFunction 是个函数
let resultFunction = thirdFunc(third1, f2: third2, b: false)
//调用函数
resultFunction()
//函数嵌套定义
typealias functionType3 = (Int)->()
func bigFunc(b:Bool)->(Int)->(){
func smallFunc1(a:Int)->(){
print("大妈今年\(a)岁")
}
func smallFunc2(a:Int)->(){
print("大妈明年\(a + 1)岁")
}
return b == true ? smallFunc1 : smallFunc2
}
let resultFunc2 = bigFunc(true)
resultFunc2(17)
原文:http://www.cnblogs.com/wsn1993/p/5058147.html