函数

函数

  • 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)
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

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

友情链接更多精彩内容