首页 > 其他分享 >Swift开篇003->控制流、函数

Swift开篇003->控制流、函数

时间:2023-02-01 12:33:22浏览次数:47  
标签:case 函数 Int 控制流 003 test func print Swift


PART_A 控制流

  1. for
  • for ... in
for index in 1 ... 5 {
print(index)
}
let names = ["cat", "dog", "fish"]
for name in names {
print(name)
}
let nums = ["num1" : 1, "num2" : 2, "num3" : 3]
for (num, count) in nums {
print("\(num) is \(count)")
}
// 无序
  • 普通for
for var x = 1(①); x <= 5(②); x++(④) {
print(x)(③)
}
// 标注为执行顺序
  1. while
  • 普通while
var num = 1
while num <= 5 {
print(num++)
}
  • repeat ... while
var num = 1
repeat {
print(num++)
} while num <= 5
  1. if
  • if
  • if ... else
  • if ... else if ... else
  1. switch-case
  • 每一个case后面必须包含语句,否则编译错误
  • case默认不用 break 来结束switch选择
  • case可用 , 来包含多个条件
  • case中可包含区间 ...​..<​​..>​
  • case中可包含元组 case (_, 0),其中 ​_​ 代表所有可能的值
  • case分支可进行值绑定:case (let x, 0)
  • case中可用 where 语句来判断额外的条件:​case let (x, y) where x == y​
let today = "Monday"
switch today {
case "Monday":
print("today is Monday")
case "Tuesday":
print("today is Tuesday")
case "Wednesday":
print("today is Wednesday")

case "Thursday", "Friday":
print("Don't put")
default:
print("404")
}
// today is Monday
  1. 控制转移语句
  • continue:结束当前循环,进行下一次循环(如在for中)
  • break:直接跳至循环体结束 ​}​
  • fallthrough:switch中如要贯穿就在case最后加上该句
  • 带标签的语句​labelName : while condition​,能明确多嵌套的循环体
  • guard:提前退出
  • return:结束/返回值
  • throw:抛异常
  1. 检测 API 可用性
if #available(iOS 9, OSX 10.10, watchOS 9.7, *) {
//
} else {
//
}

PART_B 函数

  1. 函数定义与调用
  • 定义
// func 函数名(参数名 : 参数类型) -> 返回值类型
func test(name : String) -> String {
return "hello " + name
}
  • 调用:print(test("catface"))
  1. 函数参数与返回值
  • 无参:func test() -> String
  • 多参:func test(str1 : String, falg : Bool) -> String
  • 无返回值:func test(str1 : String)
  • 多重返回值:通过元组返回
  • 可选元组返回类型:func test(arr : [Int]) -> (min : Int, max : Int)?
func test(arr : [Int]) -> (min : Int, max : Int) {
var currentMin = arr[0], currentMax = arr[0]
for value in arr[0] ... arr.count {
if value > currentMax {
currentMax = value
} else if value < currentMin {
currentMin = value
}
}
return (currentMin, currentMax)
}
  • 默认参数值:func test(num : Int = 12)
  • 可变参数(类似数组):func test(nums : Double...) -> Double
  • 常量参数和变量参数
  • 函数参数默认是常量
  • 变量参数仅存在于函数调用的生命周期中,仅能在函数体内被更改
func test(var str : String, totalLength : Int, pad : Character) -> String {
let amountToPad = totalLength - str.characters.count
if amountToPad < 1 {
return str
}

let padStr = String(pad)
for _ in 1 ... amountToPad {
str += padStr
}

return str
}
  • inout:输入输出参数(如​func change(inout a: Int, inout b: Int)​)
  • 修改后的参数值在函数调用结束后仍然存在
  • 输入输出参数是函数对函数体外产生影响的另一种方式
  1. 函数类型
  • 每个函数具有特定的函数类型
  • 例1:(Int, Int) -> Int
  • 例2:() -> Void
  • 使用函数类型
  • var mathFunction: (Int, Int) -> Int = test:此时两个函数功能相同
  • 函数类型作为参数类型
  • func printMathResult(mathFunction: (Int, Int) -> Int, a: Int, b: Int)
  • 函数类型作为返回类型
  1. 嵌套函数
  • 嵌套函数对外界透明,但可被外围函数调用
  • 外围函数可返回它的某个嵌套函数,使得该函数可在其他域中被使用
// 函数
func test(backwards: Bool) -> (Int) -> Int {
func stepForward(input: Int) -> Int { return input + 1 }
func stepBackward(input: Int) -> Int { return input - 1 }
return backwards ? stepBackward : stepForward
}
// 函数的调用
var flag = test(true)
print(flag(3))
// 2


标签:case,函数,Int,控制流,003,test,func,print,Swift
From: https://blog.51cto.com/u_15950249/6031349

相关文章

  • Swift开篇001->新建Swift工程
    最近看了点​​Swift的教程​​,在此做个笔记,那就从Xcode新建一个Swift工程开始吧​​File->New->Project​​​​OSX->Application->CommandLineTool​​​​填......
  • Swift开篇002->基本运算符
    PART_A运算符赋值运算符:​​=​​普通赋值varnumnum=5元组赋值let(x,y)=(0,0)​​=​​操作不返回任何值算数、组合赋值、自增自减、、负号、字符串拼接求余时符号......
  • #0031. Educational Codeforces Round 1
    AB简单题C是计算几何,但核心解法很像sgnoi某年的t1,即与其考虑所有pairs,不如只考虑所有相邻的,这样复杂度就从\(O(N^2)\)降到了O(N)(如果不考虑排序的复杂度的话)。不过这......
  • windows2003 DHCP服务器配置
    一、导入光驱二、安装可选的windows组件  三、双击打开网路服务,安装DHCP/DNS服务器。 注:服务器地址要固定,因此安装时要规划好网络。四、ip地址范围规划时要预......
  • Solution of Implementation: P4003 无限之环 费用流建图究极代码简化
    Preface这是一篇费用流的辅助题解。关于建图的思路和构造,题解栏目中的内容可以说是非常的详尽。然而,这些题解几乎都对16种可能性一一建图,而且还要对源汇边分别写。这样......
  • windows2003 的安装以及安装时遇到的问题
    windows2003的安装以及安装时遇到的问题简介:WindowsServer2003是微软于2003年3月28日发布的基于WindowsXP/NT5.1开发的服务器操作系统,并在同年4月底上市。WindowsServ......
  • 解决:“error PRJ0003 : 生成“cmd.exe”时出错”
    昨晚用VS2005刚写好的程序,今天打算修改,不料在编绎时,却出现了错误,错误信息如下:“errorPRJ0003:生成“cmd.exe”时出错”解决方法:在VisualStudio2005中进行如下设置:打......
  • Windows Server 2003 SP2 中文版下载
       简体中文32位x86的版   在以下版本的Windows系统上安装:   WindowsServer2003Editions   WindowsServer2003R2Editions   WindowsStorage......
  • 递归(一)003:全排列
    003:全排列总时间限制:1000ms内存限制:65536kB描述给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列。我们假设对于小写字母有'a'<'b'<...<......
  • k8s控制流程
    Kubernetes的控制流程即Kubernetes集群中资源的增、删、改、查流程。这里的资源包括集群基础设施层面的资源和集群中应用负载层面的资源。集群基础设施层面的资源的控制流......