func 函数名(参数列表) -> 返回值类型 {
代码块
return 返回值
}
,
分隔,也可以没有参数->
指向返回值类型-> 返回值类型
部分可以省略func about() -> Void {
print("iPhone Xs Max")
}
// 调用函数
about()
// 简单写法
// 如果没用返回值,Void可以写成()
func about1() -> () {
print("iPhone Xs Max")
}
about1()
// 如果没有返回值,后面的内容可以都不写
func about2() {
print("iPhone Xs Max")
}
about2()
func call(phoneNum : String) {
print("打电话给\(phoneNum)")
}
call("18888888888")
func readMessage() -> String {
return "吃饭了吗?"
}
var str = readMessage()
print(str)
func sum(num1 : Int, num2 : Int) -> Int {
return num1 + num2
}
var result = sum(num1: 20, num2: 30)
print(result)
let nums = [1, 3, 4, 8, 22, 23]
func getNumCount(nums : [Int]) -> (oddCount : Int, evenCount : Int) {
var oddCount = 0
var evenCount = 0
for num in nums {
if num % 2 == 0 {
oddCount = oddCount + 1
} else {
evenCount = evenCount + 1
}
}
return (oddCount, evenCount)
}
let result = getNumCount(nums: nums)
result.oddCount
result.evenCount
// a,b,c是形式参数标签
func add(a num1 : Int, b num2 : Int, c num3 : Int) -> Int {
return num1 + num2 + num3
}
var result1 = add(a: 20, b: 4, c: 5)
// 方法的重载:方法名称相同,但是参数不同,可以称之为方法的重载(了解)
func add(a num1 : Int, b num2 : Int) -> Int {
return num1 + num2
}
var result2 = add(a: 20, b: 4)
func makecoffee(type :String = "卡布奇诺") -> String {
return "制作一杯\(type)咖啡。"
}
let coffee1 = makecoffee(type: "拿铁")
let coffee2 = makecoffee()
func sum(numbers:Double...) -> Double {
var total: Double = 0
for number in numbers {
total += number
}
return total
}
sum(numbers: 100.0, 20, 30)
sum(numbers: 30, 80)
func swapTwoInts(_ a: inout Int, _ b: inout Int) {
let temporaryA = a
a = b
b = temporaryA
}
var a = 3
var b = 107
swapTwoInts(&a, &b)
print("a is now \(a), and b is now \(b)")
// 函数的嵌套
let value = 55
func test() {
func demo() {
print("demo \(value)")
}
print("test")
demo()
}
demo() // 错误
test() // 执行函数会先打印'test',再打印'demo'
(Int, Int) -> Int
// 定义两个函数
func addTwoInts(a : Int, b : Int) -> Int {
return a + b
}
func multiplyTwoInt(a : Int, b : Int) -> Int {
return a * b
}
// 定义函数的类型
var mathFunction : (Int, Int) -> Int = addTwoInts
// 使用函数的名称
mathFunction(10, 20)
// 给函数类型变量赋值其他值
mathFunction = multiplyTwoInt
// 使用函数的名称
mathFunction(10, 20)
// 将函数的类型作为方法的参数
func printResult(a : Int, b : Int, calculateMethod : (Int, Int) -> Int) {
print(calculateMethod(a, b))
}
printResult(a: 10, b: 20, calculateMethod: addTwoInts)
printResult(a: 10, b: 20, calculateMethod: multiplyTwoInt)
// 1.定义两个函数
func stepForward(num : Int) -> Int {
return num + 1
}
func stepBackward(num : Int) -> Int {
return num - 1
}
// 2.定义一个变量,希望该变量经过计算得到0
var num = -4
// 3.定义获取哪一个函数
func getOprationMethod(num : Int) -> (Int) -> Int {
return num <= 0 ? stepForward : stepBackward
}
// 4.for循环进行操作
while num != 0 {
let oprationMethod = getOprationMethod(num: num)
num = oprationMethod(num)
print(num)
}