当前位置: 首页 > news >正文

swift菜鸟教程13(函数)

一个朴实无华的目录

  • 今日学习内容:
    • 1.Swift 函数
      • 1.1函数定义:使用关键字 func。
      • 1.2函数参数:以逗号分隔。
      • 1.3不带参数函数
      • 1.4元组作为函数返回值
      • 1.5没有返回值函数
      • 1.6函数参数名称
        • 1.6.1局部参数名
        • 1.6.2外部参数名
      • 1.7可变参数
      • 1.8常量,变量及 I/O 参数
      • 1.8使用函数类型
      • 1.9函数类型作为参数类型、函数类型作为返回类型
      • 1.10函数嵌套:外部的函数可以调用函数内定义的函数。

今日学习内容:

1.Swift 函数

1.1函数定义:使用关键字 func。

import Cocoa

func runoob(site: String) -> String {
    return (site)
}
print(runoob(site: "www.runoob.com"))

1.2函数参数:以逗号分隔。

import Cocoa

func runoob(name: String, site: String) -> String {
    return name + site
}
print(runoob(name: "菜鸟教程:", site: "www.runoob.com"))
print(runoob(name: "Google:", site: "www.google.com"))

1.3不带参数函数

import Cocoa

func sitename() -> String {
    return "菜鸟教程"
}
print(sitename())

1.4元组作为函数返回值

用元组(tuple)类型让多个值作为一个复合值从函数中返回。

import Cocoa

func minMax(array: [Int]) -> (min: Int, max: Int) {
    var currentMin = array[0]
    var currentMax = array[0]
    for value in array[1..<array.count] {
        if value < currentMin {
            currentMin = value
        } else if value > currentMax {
            currentMax = value
        }
    }
    return (currentMin, currentMax)
}

let bounds = minMax(array: [8, -6, 2, 109, 3, 71])
print("最小值为 \(bounds.min) ,最大值为 \(bounds.max)")

将minMax(_:)函数改写为使用可选元组返回类型,并且当数组为空时返回nil:

func minMax(array: [Int]) -> (min: Int, max: Int)? {
    if array.isEmpty { return nil }
    var currentMin = array[0]
    var currentMax = array[0]
    for value in array[1..<array.count] {
        if value < currentMin {
            currentMin = value
        } else if value > currentMax {
            currentMax = value
        }
    }
    return (currentMin, currentMax)
}
if let bounds = minMax(array: [8, -6, 2, 109, 3, 71]) {
    print("最小值为 \(bounds.min),最大值为 \(bounds.max)")
}

1.5没有返回值函数

import Cocoa

func runoob(site: String) {
    print("菜鸟教程官网:\(site)")
}
runoob(site: "http://www.runoob.com")

1.6函数参数名称

1.6.1局部参数名
import Cocoa

func sample(number: Int) {
    print(number)
}
sample(number: 1)
sample(number: 2)
sample(number: 3)

1.6.2外部参数名
import Cocoa

func pow(firstArg a: Int, secondArg b: Int) -> Int {
   var res = a
   for _ in 1..<b {
      res = res * a
   }
   print(res)
   return res
}
pow(firstArg:5, secondArg:3)

1.7可变参数

import Cocoa

func vari<N>(members: N...){
    for i in members {
        print(i)
    }
}
vari(members: 4,3,5)
vari(members: 4.5, 3.1, 5.6)
vari(members: "Google", "Baidu", "Runoob")

以上程序执行输出结果为:
4
3
5
4.5
3.1
5.6
Google
Baidu
Runoob

1.8常量,变量及 I/O 参数

1.如果想要声明一个变量参数,可以在参数定义前加 inout 关键字,这样就可以改变这个参数的值了。
2.一般默认的参数传递都是传值调用的,传入的参数在函数内改变,并不影响原来的那个参数。传入的只是这个参数的副本。
3.当传入的参数作为输入输出参数时,需要在参数名前加 & 符,表示这个值可以被函数修改。

import Cocoa

func swapTwoInts(_ a: inout Int, _ b: inout Int) {
    let temporaryA = a
    a = b
    b = temporaryA
}


var x = 1
var y = 5
swapTwoInts(&x, &y)
print("x 现在的值 \(x), y 现在的值 \(y)")

以上程序执行输出结果为:
x 现在的值 5, y 现在的值 1

1.8使用函数类型

import Cocoa

func sum(a: Int, b: Int) -> Int {
   return a + b
}
var addition: (Int, Int) -> Int = sum
print("输出结果: \(addition(40, 89))")

以上程序执行输出结果为:
输出结果: 129

1.9函数类型作为参数类型、函数类型作为返回类型

func another(addition: (Int, Int) -> Int, a: Int, b: Int) {
    print("输出结果: \(addition(a, b))")
}
another(addition: sum, a: 10, b: 20)

以上程序执行输出结果为:
输出结果: 129
输出结果: 30

1.10函数嵌套:外部的函数可以调用函数内定义的函数。

import Cocoa

func calcDecrement(forDecrement total: Int) -> () -> Int {
   var overallDecrement = 0
   func decrementer() -> Int {
      overallDecrement -= total
      return overallDecrement
   }
   return decrementer
}
let decrem = calcDecrement(forDecrement: 30)
print(decrem())

以上程序执行输出结果为:
-30

相关文章:

  • Wincc脚本全部不运行
  • MySQL死锁问题深度剖析与Java解决方案
  • 解决react仿deepseek流式对话出现重复问题
  • JS String类型函数
  • 3dmax的python通过普通的摄像头动捕表情
  • 健康与好身体笔记
  • 项目学习总结001
  • 《算法笔记》3.3小节——入门模拟->图形输出
  • Android学习总结之OKHttp拦截器和缓存
  • 【leetcode hot 100 152】乘积最大子数组
  • OpenCV图像形态学详解
  • 树莓派4B配置wifi热点,可访问http协议
  • 不再卡顿!如何根据使用需求挑选合适的电脑内存?
  • ViewModel vs AndroidViewModel:核心区别与使用场景详解
  • 云服务器10M带宽实际速度能达到多少?
  • 大唐杯省赛安排来了!还有7天,该如何准备?
  • BERT、T5、ViT 和 GPT-3 架构概述及代表性应用
  • 《从零搭建Vue3项目实战》(AI辅助搭建Vue3+ElemntPlus后台管理项目)零基础入门系列第十篇:商品管理功能实现
  • MOS管的发热原因和解决办法
  • TGRS 2024 | 基于光谱相关的高光谱图像超分辨率融合网络
  • 网站布局设计排版/怎样推广自己的广告
  • 制作网站多少钱/人民日报今日头条新闻
  • 有专业制作网站的公司吗/怎样宣传网站
  • 太原专业制作网站/百度seo站长工具
  • 网站用oracle做数据库/专业网络推广机构
  • 网页制作网站的大作业/自媒体怎么赚钱