函数

函数

  • swift里的函数就是OC里的方法
  • 格式:
    • func:关键字,多个参数之间用,分隔,也可以没有参数
    • (->)指向返回值类型
func 函数名(参数类别) ->返回值类型{
   代码块
   return 返回值
}
  • 函数的基本使用
  • 没有参数没有返回值
func about ()->Void{
  print("iphone7")
}
//调用函数
about()
//简便写法
func about(){
  print("iphone7")
}
  • 有参数没有返回值的函数
func callPhone(phoneNum: String){
    print("打电话给\(phoneNum)")
    print("打电话给:"+phoneNum)
}
callPhone("+ 86 110")
  • 没有参数有返回值的函数
func newMessage() ->String{
  return "吃饭了吗"
}
newMessage()
  • 有参数有返回值的函数
func addNums(num1 :Int,num2 :Int)->Int{
   return num1 +num2
}
let result = addNums(20,num2:30)

函数的使用注意(了解)

  • 1.内部参数和外部参数
    • 内部参数(内部参数名称)
      • 在函数内部可以看到的标识符就是内部参数名称(num1,num2就是内部参数)
      • 默认情况下,所有的参数都是内部参数
    • 外部参数
      • 在函数外部可以看到的标识符就是外部参数(num1看不见,num2以后的都能看见)
      • 从第二个参数开始都是外部参数,但是第一个参数默认不是外部参数
      • 如果希望第一个参数也是外部参数,那么可以在第一个参数的标识符前,加上第一个参数的外部参数名称
      • 如果希望后面的参数不是外部参数,可以在标识符前加_
      • 如果想要修改外部参数名称,就在外部参数标识符前写上新的名字
func sum(num1 :Int ,num2: Int)->Int{
   return num1 + num2
}
sum(20,num2 :30)
//把num1变为外部参数
func sum(num1 num1 :Int ,num2: Int)->Int{
   return num1 + num2
}
sum(num1 :20,num2 :30)
//都不是外部参数
func sum(num1 :Int , _ num2: Int)->Int{
   return num1 + num2
}
sum(20,30)
  • 2.默认参数
    • 参数后面写一个等号
    • 等于后面写一个默认的值
func makeCoffee (coffeeName:String = "雀巢")->String{
   return "制作了一杯爱心\(coffeeName)咖啡"
}
let coffee1 = makeCoffee("拿铁")
makeCoffee("摩卡")
makeCoffee()
  • 3.可变参数
    • nums: Int...
    • nums是一个数组类型
    • 把所有的数组放到数组里了
    • 遍历数组就可以得到想要的结果
func sum(num1 :Int ,num2 :Int)->Int {
    return num1 +num2
}
sum(20,num2:30)
//把四个、十个数字相加
//可变参数
func sum (nums :Int...)->Int{
   var total = 0
   for num in nums{
    total += num
   } 
}
sum(20,30,40,50)
//print()也是可变函数,参数是可变的
print()
  • 4.指针(引用类型)
    • 怎么通过一个函数交换m/n的值
    • 关键字:inout
var m = 20
var n = 30
-->报错:常量是不能修改的
func changeNum(num1:Int , num2 :Int){
let temp = num1 
num1 = num2 
num2 = temp 
}
-->报警告,值传递,本质上不会交换m/n
func changeNum( var num1:Int , num2 :Int){
let temp = num1 
num1 = num2 
num2 = temp 
}
changeNum(m,num2:n)
-->指针传递:
func changeNum(inout num1 :Int ,inout num2 :Int){
let temp = num1 | num1是地址,在等号右边,相当于取值
num1 = num2 |赋值到num1的地址里,把num1里的值改num2
num2 = temp |把temp的值赋值到num2的地址里
}
change(&m,num2 :&n)
  • 5.函数嵌套使用
    • 可以在方法里面写方法
    • 建议不要这样写,代码阅读性差
func demo(){
  func test(){
  func test1(){
    print("test1")
  }
    print("test")
  }  
print("demo")
   test() | 先打印demo再打印test
}
demo

函数的类型

  • 函数的类型是由函数的参数类型和返回值类型共同组成的

    • 类型(Int ,Int)->Int
    • 把函数作为方法的参数,把函数作为方法的返回值
    • 函数式编程
      • 编程语言:Lisp
      • 比C语言C++出现的都早
      • 天才程序员使用的语言
      • 现代所有语言的高度仅仅达到了这门语言1960+的高度(比如OC的block)
      • 数学
      • Java 3000行 == Lisp 100行
      • 《黑客与画家》
      • 用于人工智能领域
func sum(num1 :Int ,num2 :Int)->Int{
return num1 +num2
}
func multiply(num1 :Int ,num2:Int)->Int{
return num1 * num2
}
var abc :(Int ,Int)->Int = sum
abc = multiply
abc(20,30)
//函数作为方法的参数,把函数以参数的形式传到另外一个地方
func printResult(cba :(Int ,Int)->Int){
print(cba(20,30))
}
printResult(sum)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,907评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,987评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,298评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,586评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,633评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,488评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,275评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,176评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,619评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,819评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,932评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,655评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,265评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,871评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,994评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,095评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,884评论 2 354

推荐阅读更多精彩内容

  • 函数是用来完成特定任务的独立的代码块。给一个函数起一个合适的名字,用来标识函数做什么,并且当函数需要执行的时候,这...
    穷人家的孩纸阅读 811评论 2 1
  • 本章将会介绍 控制流For-In 循环While 循环If 条件语句Switch 语句控制转移语句 continu...
    寒桥阅读 717评论 0 0
  • [The Swift Programming Language 中文版]本页包含内容: 函数是用来完成特定任务的独...
    风林山火阅读 482评论 0 0
  • 函数是执行特定任务的代码自包含块。给定一个函数名称标识, 当执行其任务时就可以用这个标识来进行”调用”。 Swif...
    透支未来阅读 233评论 0 1
  • 秋风流萤唤红娘, 尔念郎君自思量; 湘绮泪落连珠子, 紫绮纤纤巧步移; 且念, 将军飞骑, 女儿红装, 一朝酒醉,...
    Fiona_v阅读 194评论 0 2