一.函数
//定义一个完整的函数
// 格式 : func开头 函数名(参数)->返回值
//name, age为本地参数
// 1.有参数有返回值
func helloWorld(name:String, age:Int) -> String
{
return "myname is \(name), 今年 \(age) 岁, hello world!"
}
println(helloWorld("隔壁小王", 20))
// 2.有参数没有返回值
func eatBreakfast(food:String) {
println("早上吃的是 \(food)")
}
eatBreakfast("玉米粥")
// 3.没有参数没有返回值
func eatLunch() {
println("中午吃蒸鱼")
}
eatLunch()
// 4.没有参数有返回值
func eatDinner()->String {
return"晚上吃八宝粥"
}
println(eatDinner())
// 给定参数默认值
func defaultParameter(name:String, age:Int =18) ->String {
return"我叫\(name), 今年\(age)了"
}
println(defaultParameter("小明"))
// 外部参数
//外部参数和本地参数之间要用空格分开
func heightBigUp(高 height:Int, 大 big:Int, 上up:Int)->String{
return"小江\(height) cm, \(big) cm, \(up) cm, 高大上"
}
println(heightBigUp(高: 175, 大: 60, 上: 99))
// 外部参数的简单写法 -- 在参数前面加#
func 高富帅( #高:Int, #富:Int,#帅:String)->String{
//return"小文\(height) cm, \(rich) money, \(handsome), 高富帅"
return "高 +帅 + 富"
}
println(高富帅(高: 180, 富: 999999999, 帅: "男神"))
//println(heightRichHandsome(高: 180, 富: 999999999, 帅: "男神"))
// 可变形参 -- ...
func mutableParameter(#白:String, #富:String, #美: String...)->String{
//我需要用美
//这里的 美其实就是一个数组, 可以进行遍历
for 小美 in美{
println(小美)
}
return "白\(白), 富 \(富), 美 \(美)"
}
println(mutableParameter(白:"我", 富:"小马", 美:"小刘", "小优"))
// 默认的参数是常量的
// 下面是使用变量当作参数的函数
func varParameter(var name:String)->String
{
name += ",我的女神啊!!!"
returnname
}
println(varParameter("小刘"))
func varMyGoddess(var name:String)->String{
name += ",是小菲!!! 我看到了我的女神!!!O(∩_∩)O~~"
returnname;
}
println(varMyGoddess("小菲"))
// 函数类型
// (参数类型1, 参数类型2, ...) ->返回值类型
func type(name:String, age:Int)->String{
return "我叫\(name), 今年 \(age)"
}
println(type("小江", 25))
// 把type函数赋值给一个类型为: 参数(String, Int),返回值为String的常量
typealias fuc = (String, Int)->String
let aNewType : fuc = type
println(aNewType("小杨", 18))
// 函数作为函数参数
func takeEasy(nextType:fuc, name : String, age : Int) -> String{
returnnextType(name, age)
}
println(takeEasy(aNewType, "小强", 25))
func money(money:Int)->String{
return "我有\(money) 万RMB"
}
typealias RMB = (Int)->String
let aNewMoney : RMB = money
func makeMoney(nextMoney:RMB, money:Int)->String {
returnnextMoney(money)
}
println(makeMoney(aNewMoney, 9999))
// 函数作为返回值
let firstFuc : fuc = type
let secFuc : fuc = type
func returnFunction(age:Int) ->fuc{
if age <18 {
return firstFuc
}
else {
return secFuc
}
}
let nextType = returnFunction(19)
println(nextType("小龙", 24))
func goAhead(age1:Int, age2:Int)->Int{
return age1- age2
}
func goAway(age1:Int, age2:Int)->Int{
return age1+ age2
}
func aheadORAway(a:Bool)->(Int, Int)->Int{
if a ==true
{
return goAhead
}
else
{
return goAway
}
}
let aFunc = aheadORAway(true)
println(aFunc(50, 20))
// 嵌套函数
func nestedFunction(b:Bool)->(Int)->Int{
funcaNewFirstFunc(age:Int)->Int{
return age * 100
}
funcaNewSecFunc(age:Int)->Int{
return age * 10
}
if b ==true{
return aNewFirstFunc
}
else
{
return aNewSecFunc
}
}
let bFunc = nestedFunction(5 > 6)
println("他今年已经\(bFunc(180))岁了")
二.枚举值
enum enumerationValue{
case苹果
case香蕉
case草莓
case芒果
}
// 使用枚举值进行赋值
// 注 :第一次赋值的时候, 需要使用枚举类命名点语法,以后只需要使用点就可以了
var fruit = enumerationValue.苹果
fruit = .香蕉
println("我喜欢吃\(fruit)")
switch fruit{
case .苹果:
println(1)
case .香蕉:
println(2)
case .草莓:
println(3)
default:
println(4)
}
enum secondEnumerationValue : Int{
case老虎
case狮子
case老鹰
case蟒蛇
}
// rawValue 枚举值的初值
var 哈哈 = secondEnumerationValue.老虎.rawValue
println(哈哈)
// 枚举值的关联值
enum thirdEnumerationValue{
case关羽(String, String, Int)
case张飞(String, String, Int)
case赵云(String, String, Int)
case马超(String, String, Int)
case黄忠(String, String, Int)
}
var 五虎上将之关羽 = thirdEnumerationValue.关羽("青龙偃月刀", "读<春秋>",60)
switch 五虎上将之关羽{
//元组匹配
case .关羽(let 装备, let 爱好, let 寿命):
println("关羽")
println(装备)
default:
println("其他")
}
var 五虎上将之赵云 = thirdEnumerationValue.赵云("龙胆枪", "枪术", 65)
switch 五虎上将之赵云{
case .赵云(let 装备, let 擅长, let 寿命):
println("赵云")
println(擅长)
default:
println("其他")
}
//定义一个完整的函数
// 格式 : func开头 函数名(参数)->返回值
//name, age为本地参数
// 1.有参数有返回值
func helloWorld(name:String, age:Int) -> String
{
}
println(helloWorld("隔壁小王", 20))
// 2.有参数没有返回值
func eatBreakfast(food:String) {
}
eatBreakfast("玉米粥")
// 3.没有参数没有返回值
func eatLunch() {
}
eatLunch()
// 4.没有参数有返回值
func eatDinner()->String {
}
println(eatDinner())
// 给定参数默认值
func defaultParameter(name:String, age:Int =18) ->String {
}
println(defaultParameter("小明"))
// 外部参数
//外部参数和本地参数之间要用空格分开
func heightBigUp(高 height:Int, 大 big:Int, 上up:Int)->String{
}
println(heightBigUp(高: 175, 大: 60, 上: 99))
// 外部参数的简单写法 -- 在参数前面加#
func 高富帅( #高:Int, #富:Int,#帅:String)->String{
}
println(高富帅(高: 180, 富: 999999999, 帅: "男神"))
//println(heightRichHandsome(高: 180, 富: 999999999, 帅: "男神"))
// 可变形参 -- ...
func mutableParameter(#白:String, #富:String, #美: String...)->String{
}
println(mutableParameter(白:"我", 富:"小马", 美:"小刘", "小优"))
// 默认的参数是常量的
// 下面是使用变量当作参数的函数
func varParameter(var name:String)->String
{
}
println(varParameter("小刘"))
func varMyGoddess(var name:String)->String{
}
println(varMyGoddess("小菲"))
// 函数类型
// (参数类型1, 参数类型2, ...) ->返回值类型
func type(name:String, age:Int)->String{
}
println(type("小江", 25))
// 把type函数赋值给一个类型为: 参数(String, Int),返回值为String的常量
typealias fuc = (String, Int)->String
let aNewType : fuc = type
println(aNewType("小杨", 18))
// 函数作为函数参数
func takeEasy(nextType:fuc, name : String, age : Int) -> String{
}
println(takeEasy(aNewType, "小强", 25))
func money(money:Int)->String{
}
typealias RMB = (Int)->String
let aNewMoney : RMB = money
func makeMoney(nextMoney:RMB, money:Int)->String {
}
println(makeMoney(aNewMoney, 9999))
// 函数作为返回值
let firstFuc : fuc = type
let secFuc : fuc = type
func returnFunction(age:Int) ->fuc{
}
let nextType = returnFunction(19)
println(nextType("小龙", 24))
func goAhead(age1:Int, age2:Int)->Int{
}
func goAway(age1:Int, age2:Int)->Int{
}
func aheadORAway(a:Bool)->(Int, Int)->Int{
}
let aFunc = aheadORAway(true)
println(aFunc(50, 20))
// 嵌套函数
func nestedFunction(b:Bool)->(Int)->Int{
}
let bFunc = nestedFunction(5 > 6)
println("他今年已经\(bFunc(180))岁了")
二.枚举值
enum enumerationValue{
}
// 使用枚举值进行赋值
// 注 :第一次赋值的时候, 需要使用枚举类命名点语法,以后只需要使用点就可以了
var fruit = enumerationValue.苹果
fruit = .香蕉
println("我喜欢吃\(fruit)")
switch fruit{
case .苹果:
case .香蕉:
case .草莓:
default:
}
enum secondEnumerationValue : Int{
}
// rawValue 枚举值的初值
var 哈哈 = secondEnumerationValue.老虎.rawValue
println(哈哈)
// 枚举值的关联值
enum thirdEnumerationValue{
}
var 五虎上将之关羽 = thirdEnumerationValue.关羽("青龙偃月刀", "读<春秋>",60)
switch 五虎上将之关羽{
case .关羽(let 装备, let 爱好, let 寿命):
default:
}
var 五虎上将之赵云 = thirdEnumerationValue.赵云("龙胆枪", "枪术", 65)
switch 五虎上将之赵云{
case .赵云(let 装备, let 擅长, let 寿命):
default:
}