C语言 函数、枚举 小结

一.函数
//定义一个完整的函数
// 格式 : 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("其他")
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值