函数的介绍

  • 函数相当于OC中的方法
  • 函数的格式如下
  1. func 函数名(参数列表) -> 返回值类型 {
  2. 代码块
  3. return 返回值
  4. }
  • func是关键字,多个参数列表之间可以用逗号(,)分隔,也可以没有参数
  • 使用箭头“->”指向返回值类型
  • 如果函数没有返回值,返回值为Void.并且“-> 返回值类型”部分可以省略
  1. import UIKit
  2.  
  3. // 1.没有参数没有返回值
  4. func about() -> Void {
  5. print("iPhone7s Plus")
  6. }
  7.  
  8. func about1() {
  9. print("iPhone7s")
  10. }
  11.  
  12. about()
  13.  
  14. let view : UIView
  15.  
  16. // 2.有参数没有返回值
  17. func callPhone(phoneNum : String) {
  18. print("打电话给\(phoneNum)")
  19. }
  20.  
  21. callPhone(phoneNum: "+86 110")
  22.  
  23. // 3.没有参数有返回值
  24. func readMessage() -> String {
  25. return "吃饭了吗?"
  26. }
  27.  
  28. print(readMessage())
  29.  
  30. // 4.有参数有返回值
  31. func sum(num1 : Int, num2 : Int) -> Int {
  32. return num1 + num2
  33. }
  34.  
  35. sum(num1: , num2: )

函数的使用注意

  1. import UIKit
  2.  
  3. // 1.内部参数和外部参数
  4. // 内部参数:在函数内部可以看到的参数名称,称之为内部参数
  5. // 外部参数:在函数调用时,可以看到的参数,成之为外部参数
  6. // 默认情况下从第二个参数开始,既是内部参数也是外部参数
  7. // 如果希望将第一个参数也声明称外部参数,只需要在标识符前加上外部参数的名称即可
  8. func sum(num1 : Int, num2 : Int) -> Int {
  9. return num1 + num2
  10. }
  11.  
  12. // 函数的重载:函数名称相同,参数不同(1.参数的类型不同 2.参数的个数不同)
  13.  
  14. func sum(num1 : Int, num2 : Int, num3 : Int) -> Int {
  15. return num1 + num2 + num3
  16. }
  17.  
  18. // 2.默认参数
  19. func makeCoffee(coffeeName : String = "拿铁") -> String {
  20. return "制作了一杯\(coffeeName)咖啡"
  21. }
  22.  
  23. makeCoffee(coffeeName: "雀巢")
  24. makeCoffee(coffeeName: "猫屎")
  25.  
  26. makeCoffee()
  27.  
  28. // 3.可变参数:...会把外界传进来的参数放在数组中,在函数内部遍历数组,相加求和
  29. func sum(nums : Int...) -> Int {
  30. var result =
  31.  
  32. for num in nums {
  33. result += num
  34. }
  35.  
  36. return result
  37. }
  38.  
  39. sum(nums: , , , , , )
  40.  
  41. // 4.引用参数
  42. var m =
  43. var n =
  44.  
  45. // 注意:默认情况形参都是常年
  46. //func swapNum(var m : Int, var n : Int) {
  47. // let temp = m
  48. // m = n
  49. // n = temp
  50. //}
  51. // swapNum(20, n: 30)
  52.  
  53. // 如果形参前面有inout,则需要传递指针到函数内
  54. func swapNum( m : inout Int, n : inout Int) {
  55. let temp = m
  56. m = n
  57. n = temp
  58. }
  59.  
  60. swapNum(m: &m, n: &n)
  61.  
  62. print("m:\(m) n:\(n)")
  63.  
  64. // 5.函数的嵌套使用(不常用)
  65. func test() {
  66.  
  67. func demo() {
  68. print("demo")
  69. }
  70.  
  71. print("test")
  72.  
  73. demo()
  74. }
  75.  
  76. test()

swift学习第十天:函数的更多相关文章

  1. swift学习第十五天:闭包

    闭包 闭包的介绍 闭包和OC中的block非常相似 OC中的block是匿名的函数 Swift中的闭包是一个特殊的函数 block和闭包都经常用于回调 注意:闭包和block一样,第一次使用时可能不习 ...

  2. Swift学习笔记十五

    自动引用计数(Automatic Reference Counting) 和OC一样,Swift用自动引用计数机制来跟踪和管理你应用程序的内存,大多数情况下,你不需要考虑自己管理内存,Swift会自动 ...

  3. Swift学习笔记十二

    方法 方法就是和某种特定类型相关联的函数.类.结构体.枚举都可以定义实例方法和类型方法.类型方法和OC中的类方法类似. 结构体和枚举也可以定义方法是Swift与C/OC之间很大的一个区别,在OC中,只 ...

  4. Swift学习笔记十六:协议

    Protocol(协议)用于统一方法和属性的名称,而不实现不论什么功能. 协议可以被类.枚举.结构体实现.满足协议要求的类,枚举,结构体被称为协议的遵循者. 遵循者须要提供协议指定的成员,如属性,方法 ...

  5. Swift学习之十四:闭包(Closures)

    * 闭包(Closures) * 闭包是自包含的功能代码块,可以在代码中使用或者用来作为参数传值. * 在Swift中的闭包与C.OC中的blocks和其它编程语言(如Python)中的lambdas ...

  6. Python学习第十篇——函数初步

    def make_album(name,album_name,song_nums = 1): dict_album = {name:[album_name]} if int(song_nums) &g ...

  7. C++学习基础十六-- 函数学习笔记

    C++ Primer 第七章-函数学习笔记 一步一个脚印.循序渐进的学习. 一.参数传递 每次调用函数时,都会重新创建函数所有的形参,此时所传递的实参将会初始化对应的形参. 「如果形参是非引用类型,则 ...

  8. swift学习笔记之—自定义函数的规则说明

    原文出自:www.hangge.com  转载请保留原文链接:http://www.hangge.com/blog/cache/detail_517.html 1,无返回值的函数 func test( ...

  9. Swift学习笔记十四:构造(Initialization)

         类和结构体在实例创建时,必须为全部存储型属性设置合适的初始值. 存储型属性的值不能处于一个未知的状态.     你能够在构造器中为存储型属性赋初值,也能够在定义属性时为其设置默认值.下面章节 ...

随机推荐

  1. [TypeScript] Model Alternatives with Discriminated Union Types in TypeScript

    TypeScript’s discriminated union types (aka tagged union types) allow you to model a finite set of a ...

  2. ELKstack 中文指南

    https://www.elastic.co/downloads ELKstack 中文指南 .net Elasticsearch 学习入门笔记   一. es安装相关1.elasticsearch安 ...

  3. 基于jQuery的一组图片的滚动

    css: .displayB{display:block;}.fl{float:left;}.fr{float: right;}.posAb{position: absolute;}.posRe{po ...

  4. BZOJ5137: [Usaco2017 Dec]Standing Out from the Herd(广义后缀自动机,Parent树)

    Description Just like humans, cows often appreciate feeling they are unique in some way. Since Farme ...

  5. 【Codeforces Round #453 (Div. 2) A】 Visiting a Friend

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 维护最右端的端点就好. [代码] #include <bits/stdc++.h> using namespace st ...

  6. MySQLSocketPHPvimApache

    原文:http://www.blogjava.net/asenyifei/articles/82575.html 自己装了一个MYSQL客户端,但却发现出现这样的错误: Can't connect t ...

  7. 洛谷 P1327 数列排序

    P1327 数列排序 题目描述 给定一个数列{an},这个数列满足ai≠aj(i≠j),现在要求你把这个数列从小到大排序,每次允许你交换其中任意一对数,请问最少需要几次交换? 输入输出格式 输入格式: ...

  8. bootstrap课程12 滚动监听如何实现(bootstrap方式和自定义方式)

    bootstrap课程12 滚动监听如何实现(bootstrap方式和自定义方式) 一.总结 一句话总结:通过监听滚动的高,判断滚动的高是否大于元素距离顶端的距离 1.如何知道屏幕滚动的高? st=$ ...

  9. Logstash Json 过滤器插件

    1. Json Filter 功能概述 这是一个JSON解析过滤器.它接受一个包含JSON的现有字段,并将其扩展为Logstash事件中的实际数据结构. 默认情况下,它将把解析过的JSON放在Logs ...

  10. Python 极简教程(六)运算符

    运算符,我们日常生活中使用的加减乘除,都是运算符的一种.当然这种一般我们称为算术运算符,用于处理数字运算的. 但是在计算机语言中,还有很多的运算符.用于处理不用的情况. 主要有以下几类: 算术运算符 ...